我有一个复选框矩阵,我正在表格中列出。我需要将这个矩阵拉成多种形式,有时在一个表格上多次,所以我把它设置为子表格。
经过大量的研究和考虑,我决定装饰子窗体的最佳方法是使用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渲染)。
我可以手动构造每个元素的名称以反映数组表示法,但这似乎是漫长的过程。还有其他我缺少的选择吗?
谢谢...!
答案 0 :(得分:2)
在使用ViewScript装饰器之前,应始终使用PrepareElements装饰器来标准化名称。