Php 如何填充zend表单选择元素?

Php 如何填充zend表单选择元素?,php,zend-framework,select,Php,Zend Framework,Select,你好,我在过去几个小时一直在搜索它,已经阅读了谷歌能给我的所有匹配结果,但仍然无法让它工作 我通过以下方式创建zend form select元素: this->addElement('select','my_select', array( 'label' => 'Currency', 'value' => 'blue', 'multiOptions' => array( 'red' => 'Rouge', 'blue' => 'Bleu'

你好,我在过去几个小时一直在搜索它,已经阅读了谷歌能给我的所有匹配结果,但仍然无法让它工作

我通过以下方式创建zend form select元素:

this->addElement('select','my_select', array( 
    'label' => 'Currency', 'value' => 'blue', 
    'multiOptions' => array( 'red' => 'Rouge', 'blue' => 'Bleu', 'white' => 'Blanc', ), ) );
现在我想通过

$form->populate
从控制器上,我试着给出二维数组,比如

$vals = array("my_select" => array("US Dollar", "Pound Sterling")) 
然后给出:

$form->populate($vals);
但这不起作用,我不确定这是否会起作用,目前我正在构建我的数组,如
数组('red'=>'ruge'、'blue'=>'Bleu'、'white'=>'Blanc')
与zend form相同的类,然后动态地将其传递给addlement多选项,正如这家伙所建议的: 这是可行的,但我想通过填充来实现,如果有人能建议我如何选择默认值,我将非常感激


谢谢,

填充方法允许您使用默认值“填充”表单,即:

$form->populate(array("my_select" => "red"); 
这会将my_select设置为选择“红色”

编辑

至于多维数组,我不太确定您想做什么,您想要另一个select语句还是附加这些项?似乎它应该是另一个select元素

更详细地看一下,您想要设置的是使用populate方法中的值进行选择,这不是一个选项。但是,您可以这样做:

$currency = new Zend_Form_Element_Select('currency', array(
       "label" => "Currency",
       "required" => true,
    ));
$currency->addMultiOptions(array(
        "US Dollar" => 1,
        "Pound Sterling" => 2,
    ));

$form->addElements(array($currency));

$form->populate(array("currency" => "US Dollar"));

这将添加您的货币选择报表。这应该设置下拉列表(值数组可能来自数据库等),然后使用populate方法将US Dollar设置为默认值。

对于像我这样即将浪费宝贵时间的人,请小心!如果向select元素添加了筛选器,则必须100%确保传递到PUBLITE()的数据包含筛选的值。如果您不这样做,您的下拉框将不会得到任何选定的选项! 在我的例子中,我有一个带有以下选项的select元素:

'' => 'Choisir un pays',
'France' => 'France',
'Madagascar' => 'Madagascar',
'Maroc' => 'Maroc'
但我也把StringToLower过滤器传给了元素。。。 如果POST数据包含“马达加斯加”值,则在populate()函数中传递“马达加斯加”,但未选择任何内容。。。但是因为这个低弦过滤器,我应该通过“马达加斯加”

长话短说:小心选择元素上的过滤器:populate()可能会受到干扰

附加编辑:如果没有数据或任何非数字字符串数据被传递给此框的
populate()
,则将选中带有
Int
过滤器和
value=“0”
的复选框。。。 由于这是一个复选框,我建议避免使用
Int
过滤器,而是使用
inaray
验证器