Zend框架 - 在下拉列表框中设置“已选”值

20

我正在将一个选择元素添加到Zend_Form实例中,代码如下:

  $user = $form->createElement('select','user')->setLabel('User: ')->setRequired(true);
  foreach($users as $u)
        {
            if($selected == $u->id)
            {
                $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname);
                //*** some way of setting a selected option? selected="selected"

            }
            else
                $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname);
        }

我已经查阅了文档,但是找不到一种简单的方法来将选择元素的一个选项预设为“selected”。

7个回答

53

我刚刚想出了如何做到。

您需要使用元素的setValue()方法:

$user = $form->createElement('select','user')->setLabel('User: ')->setRequired(true);
    foreach($users as $u)
        $user->addMultiOption($u->id,$u->firstname.' '.$u->lastname);

$user->setValue($selected); //$selected is the 'value' of the <option> that you want to apply selected="selected" to.

30
$form->addElement('select','foo',
array(
        'label'        => 'ComboBox (select)',
        'value'        => 'blue',
        'multiOptions' => array(
            'red'    => 'Rouge',
            'blue'   => 'Bleu',
            'white'  => 'Blanc',
        ),
    )
);

如上所述,您可以使用'value' => 'blue'将“蓝色”=>“Bleu”选中。

我希望这可以帮助您。


这段代码帮助我们通过addElement创建元素而不是上面的createElement。 - Raj

7
在Zend Framework 2中设置'value'属性。例如,将Select默认设置为'Yes':
    $this->add( array(
        'name'     => 'isFlexible',
        'type'     => 'Select',
        'options'  => array(
             'label'            => 'Is it flexible?'
            ,'label_attributes' => array( 'placement' => 'APPEND')
            ,'value_options'    => array(
                    ''  => 'Select Below',
                    '0' => 'No',
                    '1' => 'Yes',
                    '2' => 'N/A',
            ),
        ),
        'attributes' => array(
            'id'     => 'is_flexible',
            'value'  => 1,
        ),
    ));

1

我认为这应该可以工作:

$form->setDefault('user', 'value'); // Set default value for element

似乎不起作用。我已将'value'设置为我想要应用selected="selected"的<option>对应的值,但它并没有被设置为选中状态。 - Tom
1
setDefault()是一个表单方法。Tom的解决方案setValue()是一个元素方法。设置值时,它取决于您使用的对象。 - Sonny

0
我刚刚尝试了以下代码,以从控制器中选择下拉值并显示它,它可以正常工作。 $user->setValue($value); //$value是‘value’,$user是表单元素。

0

上述解决方案不适用于Zend Framework 2,对于使用Zf2的人,我建议使用以下指令来设置默认值:

    $formX->get('<Select element Name>')->setValue(<the id of the selected item>);

0

要设置默认值,您可以尝试使用 setDefault 或 populate 两种方法

$form->populate( $array_keypair_values );


1
为了提高您的帖子质量,请说明您的答案如何/为什么能解决问题。 - Mick MacCallum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接