1

Zend Framework2 で zend サブフォームを使用する方法はありますか。インターネットで検索を行ったところ、Zend サブフォームの使用方法を示す多くの例にたどり着きましたが、Zend Framework1 を使用しています。

誰かが基本的な例を試すことができるリンク/例を持っている場合、それは素晴らしいことです.

どんな情報でも大歓迎です。

4

2 に答える 2

5

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="">

「サブフォーム」の入力名は、自動的にプレフィックスとしてフォーム名を追加することに注意してください。

于 2012-12-05T07:36:11.837 に答える
0

私はそれを数時間使用してきましたが、私の理解では、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()。そうしないと、ネスティングが処理されません。

于 2013-08-22T17:18:22.513 に答える