Zend Framework 1.12选择元素 - 名称数组问题

时间:2012-12-27 00:34:33

标签: php zend-framework zend-form zend-form-element

当出于某种原因将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的新实例,因为已经建立了一个。

2 个答案:

答案 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));