你如何组合子表格

时间:2011-02-23 20:39:32

标签: 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的文档中找不到任何内容。如果有其他人遇到这种困境,我想我会把它发布在这里。

2 个答案:

答案 0 :(得分:5)

基本上我已经弄清楚了。

首先创建“空”子表单

$left = new Zend_Form_SubForm();     

然后在“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')),
        ));

谢谢

答案 1 :(得分:0)

在这种情况下,也许addDisplayGroup也没问题?