Zend framework2 如何在Zend Framework2中使用子窗体

Zend framework2 如何在Zend Framework2中使用子窗体,zend-framework2,subforms,Zend Framework2,Subforms,有没有办法在zend Framework2中使用zend子窗体。当我在互联网上搜索时,我发现了许多示例,展示了如何使用zend子表单,但使用zend Framework1 如果有人有一个链接/示例,可以浏览一个基本示例,那就太好了 欢迎提供任何信息。因为Zend\Form是树形结构,所以您可以使用表单名称在表单中添加另一个表单。例如: $form = new \Zend\Form\Form(); $form->add(array( 'name' => 'username',

有没有办法在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="">

请注意,子表单输入名称将是add form name as prefix automatic。

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

请注意,子表单输入名称将是add form name as prefix automatic。

我已经使用它几个小时了,据我所知,zf1子表单功能在zf2中通过使用嵌套字段集来解决

\Zend\Form\Fieldset也是\Zend\Form\Form的父类

前面的答案对我来说似乎是正确的,但如果您希望将窗体和子窗体保留在单独的类中,请阅读以下内容:

如果您现在不感兴趣,请忽略实体和其他内容,看看CreateProduct类,它是一个将FieldSet ProductFieldset用作子表单的表单。在渲染时,子窗体字段将命名为

<input ...name="product[el1]" ... >

注意:您需要调用$form->prepare;在渲染之前,否则嵌套将不会被处理。

我已经使用它几个小时了,据我所知,zf1子窗体函数在zf2中通过使用嵌套字段集来解决

\Zend\Form\Fieldset也是\Zend\Form\Form的父类

前面的答案对我来说似乎是正确的,但如果您希望将窗体和子窗体保留在单独的类中,请阅读以下内容:

如果您现在不感兴趣,请忽略实体和其他内容,看看CreateProduct类,它是一个将FieldSet ProductFieldset用作子表单的表单。在渲染时,子窗体字段将命名为

<input ...name="product[el1]" ... >
注意:您需要调用$form->prepare;渲染之前,否则将不处理嵌套