Silverstripe CMS 将数据加载到表单中:BootstrapForm::loadDataFrom() 链接到


Silverstripe CMS Loading data into form : BootstrapForm::loadDataFrom() Link to this post

我正在尝试将数据加载到表单中。我正在使用奶酪叔叔的引导表单模块。据我了解,我通常会调用$form->loadDataFrom(Customer::get()->byID(4));但引导模块以不同的方式构建表单。

//CREATE CUSTOMER FORM
public function CustomerForm() {
    return BootstrapForm::create(   
        $this,
        "CustomerForm",
        FieldList::create(
            TextField::create("Name","Name")
            TextField::create("Surname","Surname"),
            FieldList::create(
                FormAction::create("AddCustomer","Add customer")
                    ->setStyle("success")
            ),
            RequiredFields::create(array("Name","Surname","Tel1", "Address")),
            /// I think the load data method should go here but i keep getting errors
            BootstrapForm::loadDataFrom(Customer::get()->byID(4)
        )
    )
}

任何帮助将不胜感激。

您需要在

表单创建之外调用 loadDataFrom(( 函数,以传入字段填充的数据对象。

注意:在下面的示例中,传递到 BootstrapForm::create(( 中的每个参数都被拆分为变量。这往往会使代码更具可读性和易用性,如果你以后需要更改表单参数。

我发现这是一个很好的做法,而不是试图将所有内容塞进一个方法调用中。

一旦数据被加载到表单中,我们返回表单对象:

return $form;

这使表单可用于视图图层。例如,在 SilverStripe *.ss 模板中,您可以通过在标记中放置一个$CustomerForm占位符来包含此表单。

希望对您有所帮助。

//CREATE CUSTOMER FORM
public function CustomerForm(){
    $fields = FieldList::create(
        TextField::create("Name","Name"),
        TextField::create("Surname","Surname")
    );
    $actions = FieldList::create(
        FormAction::create("AddCustomer","Add customer")
        ->setStyle("success")
    );
    $validator = RequiredFields::create(array("Name","Surname","Tel1", "Address"));
    $form = BootstrapForm::create($this, "CustomerForm", $fields, $actions, $validator);
    //Load your data into the form here.
    $form->loadDataFrom(Customer::get()->byID(4));
    return $form;
}