有没有办法在 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()
; 在渲染之前,否则不会处理嵌套。