zend-framework - 你如何分组子表单

标签 zend-framework zend-form zend-form-sub-form

我在一个表单中有 4 个子表单,我想将其中的 2 个组合在一起,然后对它们应用一些装饰器。

这是我到目前为止所拥有的。 w/在每个子表单中,我已经有一些显示组

$this->setSubForms(array(
    'sub1'  => $sub1,
    'sub2'  => $sub2,
    'sub3'  => $sub3,
    'sub4'  => $sub4
));

我以为我可以做类似的事情
$set1 = $this->setSubFormDecorators(array(
    'sub1'  => $sub1,
    'sub2'  => $sub2
    ));
    $set1->setDecorator(array('something here'));

$set2 = $this->setSubFormDecorators(array(
    'sub3'  => $sub3,
    'sub4'  => $sub4
    ));
    $set2->setDecorator(array('something here'));

显然这根本行不通。

我真的在 ZF 的文档中找不到任何内容。如果其他人遇到这个困境,我想我会把它贴在这里。

最佳答案

所以基本上我已经想通了。

首先,您创建“空”子表单

$left = new Zend_Form_SubForm();     

然后你在这个“子表单”中添加你想要的子表单
$left->setSubForms(array(
   'sub1'  => $sub1,
   'sub2'  => $sub2
));

您对要添加装饰器的其他子表单执行相同的操作。
$right = new Zend_Form_SubForm();     

$right->setSubForms(array(
   'sub3'  => $sub3,
   'sub4'  => $sub4
));

然后在您的原始表单中添加这些新的“$left”和“$right”子表单
$this->setSubForms(array(
   'left'  => $left,
   'right' => $right
));

然后,您可以根据需要将装饰器应用于“$left”和“$right”子表单。

因为我想删除封装内部元素的字段集
我的看起来像这样,你对另一个也这样做。
    $left->setDecorators(array(
        'FormElements',
        array('HtmlTag', array('tag' => 'div')),
        ));

谢谢

关于zend-framework - 你如何分组子表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5096800/

相关文章:

zend-framework - 在嵌套子表单(Zend 表单)上使用 ViewScript 装饰器

php - 合并 Zend Framework 的 jQuery AJAX 请求

php - 为什么我在使用 Zend Framework 1 发送电子邮件时收到 500 内部服务器错误?

php - 为 Zend Framework 应用程序构建 AJAX 的最佳方式

zend-framework - Zend 单选元素装饰器

php - 更改 Zend 图片验证码样式

database - Zend 框架 : Populating DB data to a Zend Form dropdown element

php - 通过 Annotation Builder 在 Zend Framework 2 Forms 中填充关系数据