如何在 Zend Framework2 中使用子窗体



有没有办法在Zend Framework2中使用zend子窗体。当我在互联网上搜索时,我发现了许多示例,展示了如何使用zend子窗体,但使用Zend Framework1。

如果有人有一个链接/示例,可以通过一个基本示例,那就太好了。

任何信息不胜感激。

因为 Zend\Form 是树结构,所以您可以使用表单名称在表单中添加另一个表单。比如这样:

$form = new ZendFormForm();
$form->add(array(
    'name' => 'username',
    'type'  => 'ZendFormElementText',
));
$subForm = new ZendFormForm();
$subForm->setName('subform');
$subForm->add(array(
    'name' => 'email',
    'type'  => 'ZendFormElementText',
));
$form->add($subForm);
$form->prepare();
$helper = new ZendFormViewHelperFormText();
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 中解决的。

ZendFormFieldset也是ZendFormForm的父类。

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

http://zf2.readthedocs.org/en/latest/modules/zend.form.collections.html

如果您现在不感兴趣,请忽略实体和水合的内容,并查看CreateProduct类,它是一个使用 FieldSet ProductFieldset作为子窗体的表单。在呈现时,子窗体字段的名称如下

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

(其中product是子窗体的名称)。$form->getData() 将返回

array('product'=>array(...))

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

相关内容

  • 没有找到相关文章

最新更新