在Zend_Form_Element_Select中向options数组添加额外元素

时间:2013-02-25 11:00:13

标签: php zend-framework zend-form options

基本上,我需要在Zend创建的选择框中包含一些额外的数据。目前的标记如下:

<select>
    <option label="Canadian Dollar ($)" value="1">Canadian Dollar ($)</option>
    <option label="Euro (€)" value="2">Euro (€)</option>
    <option label="US Dollar ($)" value="3">US Dollar ($)</option>
</select>

我想要实现的标记如下(注意额外的'data-curreny-type'属性):

<select>
    <option label="Canadian Dollar ($)" value="1" data-currency-code="CAD">Canadian Dollar ($)</option>
    <option label="Euro (€)" value="2" data-currency-code="EUR">Euro (€)</option>
    <option label="US Dollar ($)" value="3" data-currency-code="USD">US Dollar ($)</option>
</select>

使用Zend创建表单如下:

$element = new Zend_Form_Element_Select(self::NAME);

/* -- OMMITED DB CODE --*/

$element->setOptions($options);

$ options是一个数组形式:array('1'=&gt;'Value1','2'=&gt;'Value2')..等等。

我的问题是,有没有办法使用Zend - &gt; setOptions($ opts)在'options'元素中添加额外的元素?或者我可能不知道的任何事情。

请帮忙!

2 个答案:

答案 0 :(得分:2)

呈现元素的FormSelect视图助手不支持<option>标记上的其他属性,因此实现此目的的唯一方法是使用您自己的实现覆盖该帮助程序。帮助程序类是Zend_View_Helper_FormSelect,因此如果您查看代码,您应该能够看到它是如何工作的。

答案 1 :(得分:0)

请使用setArribute方法添加其他属性。您可以添加数据货币代码作为属性。