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

Ham*_*riq 9 php select zend-framework

你好,我一直在寻找它,从最近几个小时,并阅读谷歌可以给我但仍然无法让它工作的每个匹配结果.

我正在通过以下方式创建一个zend表单select元素:

this->addElement('select','my_select', array( 
    'label' => 'Currency', 'value' => 'blue', 
    'multiOptions' => array( 'red' => 'Rouge', 'blue' => 'Bleu', 'white' => 'Blanc', ), ) );
Run Code Online (Sandbox Code Playgroud)

现在我想填补它

$form->populate
Run Code Online (Sandbox Code Playgroud)

从控制器,我已经尝试过给出双维数组

$vals = array("my_select" => array("US Dollar", "Pound Sterling")) 
Run Code Online (Sandbox Code Playgroud)

然后给它:

$form->populate($vals);
Run Code Online (Sandbox Code Playgroud)

但这并没有用,我不确定这是否有效,目前我正在构建我的数组,就像在array( 'red' => 'Rouge', 'blue' => 'Bleu', 'white' => 'Blanc')zend形式的同一个类中,然后动态地将它传递给addElement multiOptions,正如这家伙在这里建议的那样: http:// zendguru.wordpress.com/2009/03/06/zend-framework-form-working-with-dropdownselect-list/ 有效,但我想通过填充,如果有人可以建议我如何选择默认值好吧,我将非常感激!

谢谢,

Jim*_* W. 10

populate方法允许您使用默认值IE"填充"表单:

$form->populate(array("my_select" => "red"); 
Run Code Online (Sandbox Code Playgroud)

这会将my_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"));
Run Code Online (Sandbox Code Playgroud)

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