8

我在一个表单中有 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 的文档中找不到任何东西。如果其他人遇到这个困境,我想我把它贴在这里。

4

2 回答 2

5

所以基本上我已经弄清楚了。

首先你创建“空”子表单

$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')),
        ));

谢谢

于 2011-02-24T00:56:50.343 回答
0

也许addDisplayGroup在这种情况下也会很好?

于 2011-02-23T23:21:32.573 回答