当出于某种原因将Zend_Form_Element_Select与setIsArray结合使用时,Zend Framework 1.12假定您需要多重选择。这似乎是一个奇怪的框架行为,所以我认为必须有一个解决方法或其他选项,我只是没有设置。
例如,如果我使用以下代码:
$element = $this->getElement('element');
$element->setIsArray(true)
->setMultiOptions(array('a' => 'A'));
我得到以下输出:
<select name="element[]" id="element" multiple="multiple">
<option value="a" label="A">A</option>
</select>
当我想要所需的输出时:
<select name="element[]" id="element">
<option value="a" label="A">A</option>
</select>
即。我不想要multiple =“multiple”
我已经研究了解决这个问题的方法,但我觉得它们不适合这样一个简单的问题,例如在表单元素的名称中添加括号。在这一点上,我正在考虑使用jquery在页面加载时删除这个多属性,但这真的很糟糕,无法想象Zend Framework会以这种方式工作。
有没有人知道如何使用上面的代码示例执行此操作?我不想实例化zend form select或addElement的新实例,因为已经建立了一个。
答案 0 :(得分:2)
ZF Issue tracker有一个非常相似的主题,您是否尝试过建议的解决方法?
$element = new Zend_Form_Element_Select('selectbox', array('multiple' => false ));
$element->setIsArray(true);
答案 1 :(得分:2)
所以这是这个问题的解决方案,使用带有multiple =&gt;的setOptions方法如下例中所示为false:
$element = $this->getElement('element');
$element->setMultiOptions(array('a' => 'A'))
->setIsArray(true)
->setOptions(array('multiple' => false));