Zend_Form 数组表示法和空元素名称
我想渲染:
<input type="text" value="" name="foo[]" />
<input type="text" value="" name="bar[]" />
但是 Zend_Form_Element 需要一个(字符串)名称,所以我需要这样做:
$this->addElement('text', '1', array(
'belongsTo' => 'foo'
));
$this->addElement('text', '2', array(
'belongsTo' => 'bar'
));
但是输出是:
<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-2" type="text" value="" name="bar[2]" />
我也可以接受类似的输出:
<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-1" type="text" value="" name="bar[1]" />
但是 Zend_Form_Element 重写具有相同名称的元素
有没有办法做我想做的事情需要?
I'want to render:
<input type="text" value="" name="foo[]" />
<input type="text" value="" name="bar[]" />
but Zend_Form_Element require a (string) name, so I need to do:
$this->addElement('text', '1', array(
'belongsTo' => 'foo'
));
$this->addElement('text', '2', array(
'belongsTo' => 'bar'
));
but the output is:
<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-2" type="text" value="" name="bar[2]" />
I can also accept an output like:
<input id="foo-1" type="text" value="" name="foo[1]" />
<input id="bar-1" type="text" value="" name="bar[1]" />
but Zend_Form_Element rewrite elements with the same name
is there a way to do what I need?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于多个值:
生成:
name="foo[]"
--
如果您正在查找给定的键,例如
name="foo[bar]"
,请使用:--
在 ZF 1.11.5 上测试
For multiple values:
Generates:
name="foo[]"
--
If you're looking for given keys such as
name="foo[bar]"
, use:--
Tested on ZF 1.11.5
类 MyFooForm 扩展 Zend_Form {
公共函数 init() {
$fullNameOpts = 数组(
'必需'=>假,
'标签'=>'全名',
'isArray'=>true,
'验证者' =>数组( 数组('stringLength', false, 数组(1, 250) ) )
);
$this->addElement('text' ,'fullName',$fullNameOpts);
// 其余的元素、形式和内容都放在这里
}
这
确实创建了
It's on Element.php ,在 Form 中,第 512 行“isArray”检查。
我正在使用常规的 zend_form、带有自定义验证器的 crossValidation,并且我正在推送子表单来复制主表单,因为用户可以多次添加相同的表单。
另外,我太懒于研究自定义装饰器,我已经创建了一个,但它杀死了子表单和数组表示法,所以我只坚持使用常规装饰器,这解决了它。
我现在是Zf 1.10。
class MyFooForm extends Zend_Form {
public function init() {
$fullNameOpts = array(
'required'=>false,
'label'=>'fullName',
'isArray'=>true,
'validators' => array( array('stringLength', false, array(1, 250) ) )
);
$this->addElement('text' ,'fullName',$fullNameOpts);
// rest of the elements , forms and stuff goes here
}
}
And that does creates
It's on Element.php , in Form , line 512 "isArray" check.
I'm using a regular zend_form, crossValidation with custom validators and i'm pushing subforms to replicate the main form, 'cause the user can add multiple times the same form.
Additionally , I'm too lazy to research custom decorators, i have created one, but it kills subForms and array notation, so i just stick with the regular ones, and that solves it.
I'm at Zf 1.10.