【发布时间】:2011-05-18 08:57:18
【问题描述】:
我想创建一个表单,允许用户输入任意数量的值,每个值都使用数组表示法在单独的文本字段中。预期的 HTML 输出示例是:
<dd id="dupa-element">
<input type="text" name="dupa[]" value="">
<input type="text" name="dupa[]" value="">
</dd>
但是,我似乎找不到在单个元素中引入多个输入元素的方法,使用不带索引的数组表示法。
目前,我这样做:
$elt1 = new Zend_Form_Element_Text('1');
$elt1->setOptions(array('belongsTo' => 'dupa'));
$elt2 = new Zend_Form_Element_Textarea('2');
$elt2->setOptions(array('belongsTo' => 'dupa'));
虽然这可行,但 Zend_Form 将它们视为独立元素(可以有不同的验证器和过滤器集 - 这有点酷),生成的 HTML 是这样的:
<dd id="dupa-1-element">
<input type="text" name="dupa[1]" id="dupa-1" value="">
</dd>
<dd id="dupa-2-element">
<input type="text" name="dupa[2]" id="dupa-2" value="">
</dd>
有没有(最好是简单的)方法来实现我所追求的无索引数组表示法?
【问题讨论】:
-
@David,这与我的问题有什么关系?
-
我想我将您的措辞“允许用户输入任意数量的值”解释为在交付表单时此类元素的数量是未知的。我链接的帖子概述了一种允许用户在客户端动态添加这些表单元素的方法,并且服务器端
Zend_Form实例可以“神奇地”修改以反映客户端的现实。如果您的情况没有那种不确定性,那么我将删除我的评论。抱歉,误读了。 -
哦,不,没关系,你不必删除它。我想我可以更明确地表达这一点。我有一个很小的 jQuery 脚本,可以在客户端添加或删除元素,而服务器端没有对它们进行验证,因此只要所有输入都作为数组发送,任何输入都可以。问题是当我从数据库中提取数组时,我真的应该填充表单服务器端,而不是客户端 - 而 Zend 似乎无法在本地处理这些表单:)。
标签: arrays zend-framework zend-form