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

发布于 2024-11-30 18:48:26 字数 679 浏览 1 评论 0原文

我有一个复选框矩阵,我将其放在表格中。我需要将该矩阵拉成多种形式,有时在一种形式上多次拉出,因此我将其设置为子形式。

经过大量研究和深思熟虑,我决定装饰子表单的最佳方法是使用 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 渲染一次)。

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

谢谢...!

I have a matrix of checkboxes which I am laying out in a table. I need to pull this matrix into a number of forms, and sometimes multiple times on one form, so I have set it up as a subform.

After much research and deliberation, I decided the best way to decorate the subform was using the viewScript decorator. The code for adding the subform to the form looks something like this:

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

For the most part this works fine however the one problem I have is that I can't get array notation to work. Obviously this becomes a problem when I include the matrix more than once on a particular form.

I tried using setIsArray(true) however this had no effefct. It seems that I need to run the FormElements decorator to get the array notation, but this then gives me a duplicate set of fields on the page (rendered once by FormElements, and once by viewScript).

I could manually construct the name of each element to reflect array notation, but this seems like the long way around. Are there any other options that I'm missing?

Thanks...!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

守望孤独 2024-12-07 18:48:26

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

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

Before using the ViewScript decorator, you should always use the PrepareElements decorator to normalize names.

See http://framework.zend.com/manual/en/zend.form.standardDecorators.html#zend.form.standardDecorators.prepareElements

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文