Zend:ViewScript装饰器和数组表示法

时间:2011-08-23 00:19:40

标签: zend-framework zend-form

我有一个复选框矩阵,我正在表格中列出。我需要将这个矩阵拉成多种形式,有时在一个表格上多次,所以我把它设置为子表格。

经过大量的研究和考虑,我决定装饰子窗体的最佳方法是使用viewScript装饰器。将子表单添加到表单的代码如下所示:

$this->addSubForm(new Test_Form_Connection_Config_Base(), 'user');
$this->user->setDecorators(array(
    array('viewScript', array('viewScript' => '_forms/userConfig.phtml')),
          'Description',
          'FieldSet',
        ));

在大多数情况下,这工作正常,但我遇到的一个问题是我无法使用数组表示法。显然,当我在特定表格上多次包含矩阵时,这就成了一个问题。

我尝试使用setIsArray(true),但这没有效果。看来我需要运行FormElements装饰器来获取数组符号,但这会在页面上给我一组重复的字段(由FormElements渲染一次,一次由viewScript渲染)。

我可以手动构造每个元素的名称以反映数组表示法,但这似乎是漫长的过程。还有其他我缺少的选择吗?

谢谢...!

1 个答案:

答案 0 :(得分:2)

在使用ViewScript装饰器之前,应始终使用PrepareElements装饰器来标准化名称。

请参阅http://framework.zend.com/manual/en/zend.form.standardDecorators.html#zend.form.standardDecorators.prepareElements