向Zend_Form_Element_Select中的选项数组添加额外元素


Adding extra elements to options array in Zend_Form_Element_Select

基本上,我需要一个额外的数据位来包含在使用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'=>'Value1','2'=>'Value2'(。。等

我的问题是,有没有办法使用Zend->setOptions($opts(将额外的元素添加到"options"元素中?或者任何我可能不知道的事情。

请帮忙!

渲染元素的FormSelect视图辅助对象不支持<option>标记上的其他属性,因此实现这一点的唯一方法是用自己的实现覆盖该辅助对象。helper类是Zend_View_Helper_FormSelect,所以如果您查看它的代码,您应该能够了解它是如何工作的。

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