我正在创建像这样的表单元素
$elements = array();
$element = $this->CreateElement('checkbox', 'field[0]' );
$element->setLabel( 'MyField1' );
$element->setAttrib( 'checked', true );
$elements[] = $element;
$element = $this->CreateElement('checkbox', 'field[1]' );
$element->setLabel( 'MyField2' );
$element->setAttrib( 'checked', true );
$elements[] = $element;
$this->addElements( $elements );
但是设置name='field0'
和name='field1'
代替name='field[0]'
和name='field[1]'
我们如何在元素名称中添加[]
?
由于
答案 0 :(得分:2)
我读了2种解决方案,其中一种是setElementsBelongTo
,另一种是setIsArray
,但解决方案对我来说不舒服,为什么它们阻止括号我不理解。为什么为什么?
我认为一种方法是编辑过滤器功能以允许括号。
答案 1 :(得分:1)
答案 2 :(得分:1)
我认为它不仅仅支持zend形式:
Zend_Form_SubForm
$foo = new Zend_Form_SubForm();
$foo->setElementsBelongTo('foo')
->setElements(array(
'bar' => 'text',
'baz' => 'text'
));
echo $foo;
给你:
<input type="text" name="foo[bar]" id="foo.bar" value="" />
<input type="text" name="foo[baz]" id="foo.baz" value="" />
答案 3 :(得分:0)
因此,首先,名称不允许在内部使用括号 其他各种功能都可以使用(主要是超载访问)。
那就是说,你可以强制括号出现在一对夫妇的输出中 不同的方式。
如果您想要括号以允许捕获多个值 - 即,像'foo []'这样的名字 - 打开isArray属性:
$element->setIsArray(true); // or pass a true value to the
// "isArray" key during
// instantiation
如果您希望该值是另一个值中的键,例如, “bar [foo]”,然后你需要告诉它属于另一个元素 值:
$element->setBelongsTo('bar'); // or pass the value to the
// 'belongsTo' key during
// instantiation
如果使用子表单,默认情况下会发生数组表示法;所有 元素“belongsTo”子表单的名称
答案 4 :(得分:0)
这对我有用
$file = $this->createElement('file', 'myImgUpload');
$file->setAttrib('name', 'myImgUpload[]');
顺便说一句:在Zend_Form_Element::setName()
中,方法Zend_Form_Element::filterName()
删除括号