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