2

由于某种原因,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>

即我不想要多个=“多个”

我已经研究过解决这个问题的方法,但我觉得它们不适合像在表单元素的名称中添加括号这样的简单问题。在这一点上,我正在考虑使用 jquery 来删除页面加载时的这个多重属性,但这真的很hacky,无法想象 Zend Framework 会以这种方式工作。

有谁知道如何使用上面的代码示例来做到这一点?我不想实例化 zend 表单选择或 addElement 的新实例,因为已经建立了一个。

4

2 回答 2

2

ZF Issue tracker有一个非常相似的线程,您尝试过建议的解决方法吗?

$element = new Zend_Form_Element_Select('selectbox', array('multiple' => false ));
$element->setIsArray(true);
于 2012-12-27T01:32:25.243 回答
2

所以这是这个问题的解决方案,使用带有多个 => false 的 setOptions 方法,如下面的示例所示:

$element = $this->getElement('element');
$element->setMultiOptions(array('a' => 'A'))
        ->setIsArray(true)
        ->setOptions(array('multiple' => false));
于 2012-12-27T23:45:56.580 回答