0

フォームにデータをロードしようとしています。Uncle Cheese の bootstrap-forms モジュールを使用しています。私が理解しているように、通常は呼び出します$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)
        )
    )
}

どんな助けでも大歓迎です。

4

1 に答える 1

1

フォーム作成の外で loadDataFrom() 関数を呼び出して、フィールドの入力用に DataObject を渡す必要があります。

注:以下の例では、BootstrapForm::create() に渡される各引数が変数に分割されています。これにより、後でフォーム引数を変更する必要がある場合に、コードが読みやすく簡単になります。

1 つのメソッド呼び出しにすべてを詰め込もうとするよりも、これが良い方法だと思います。

データがフォームにロードされると、次のフォーム オブジェクトを返します。

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;
}
于 2013-10-10T20:53:55.920 に答える