Zend Framework2 で zend サブフォームを使用する方法はありますか。インターネットで検索を行ったところ、Zend サブフォームの使用方法を示す多くの例にたどり着きましたが、Zend Framework1 を使用しています。
誰かが基本的な例を試すことができるリンク/例を持っている場合、それは素晴らしいことです.
どんな情報でも大歓迎です。
Zend Framework2 で zend サブフォームを使用する方法はありますか。インターネットで検索を行ったところ、Zend サブフォームの使用方法を示す多くの例にたどり着きましたが、Zend Framework1 を使用しています。
誰かが基本的な例を試すことができるリンク/例を持っている場合、それは素晴らしいことです.
どんな情報でも大歓迎です。
Zend\Form はツリー構造であるため、フォーム名を使用してフォームに別のフォームを追加できます。このような:
$form = new \Zend\Form\Form();
$form->add(array(
'name' => 'username',
'type' => 'Zend\Form\Element\Text',
));
$subForm = new \Zend\Form\Form();
$subForm->setName('subform');
$subForm->add(array(
'name' => 'email',
'type' => 'Zend\Form\Element\Text',
));
$form->add($subForm);
$form->prepare();
$helper = new Zend\Form\View\Helper\FormText();
echo $helper($form->get('username')); //<input type="text" name="username" value="">
echo $helper($form->get('subform')->get('email')); //<input type="text" name="subform[email]" value="">
「サブフォーム」の入力名は、自動的にプレフィックスとしてフォーム名を追加することに注意してください。
私はそれを数時間使用してきましたが、私の理解では、zf1 サブフォームの機能は、ネストされたフィールドセットを使用して zf2 で解決されています。
\Zend\Form\Fieldset
の親クラスでもあり\Zend\Form\Form
ます。
前の答えは私には正しいように思えますが、フォームとサブフォームを別々のクラスに保持したい場合は、これを読んでください:
http://zf2.readthedocs.org/en/latest/modules/zend.form.collections.html
今のところ興味がない場合は、エンティティと水和物を無視して、CreateProduct
クラスを見てください。これは、FieldSetProductFieldset
をサブフォームとして使用するフォームです。レンダリング時に、サブフォーム フィールドは次のように命名されます。
<input ...name="product[el1]" ... >
(product
はサブフォームの名前です)。そして $form->getData() が返されます
array('product'=>array(...))
注: に電話する必要があります$form->prepare()
。そうしないと、ネスティングが処理されません。