Symfony2:设置选择的默认选项

时间:2013-03-27 19:17:11

标签: symfony symfony-forms

我有一个下拉列表(选择),我想选择默认选项:

这是生成选择的代码:

    $builder->add('language', 'choice', array(
        'label' => 'pages.age.gateway.language.label',
        'choices' => array(1 => 'first option', 2 => 'second option'),
    ));

我已尝试过以下内容(此处建议Symfony2 Setting a default choice field selection):

    $builder->add('language', 'choice', array(
        'label' => 'pages.age.gateway.language.label',
        'choices' => array(1 => 'first option', 2 => 'second option'),
        'data' => '2'
    ));

这对我的代码不起作用(我对symfony2的理解,我可能没有朝着正确的方向发展)。

另一种选择是使用'preferred_choices',但我想避免这种情况,因为我不想修改选项的显示顺序。

2 个答案:

答案 0 :(得分:1)

如果您的表单取决于实体:

/* Action */
public function myAction()
{
    $user = new User();
    $user->setLanguage(2); // Set the default option
    $form = $this->createForm(new UserType(), $user); // Give the user to the form

    if ($request->getMethod() == 'POST') {

            $form->bindRequest($request);

            if ($form->isValid()) {

                $user = $form->getData();
                // Do something like save / redirect
            }
     }

     return array(
        'form' => $form->createView(),
     );
}

此外,您可以设置首选项(但不是真正的默认值),这要归功于preferred_choices键(它将值向上移动到选择的顶部):

$builder->add('language', 'choice', array(
        'label' => 'pages.age.gateway.language.label',
        'choices' => array(1 => 'first option', 2 => 'second option'),
        'preferred_choices' => 2
));

答案 1 :(得分:-1)

您想要添加没有值的选项。您可以使用选项empty_value执行此操作。

    $builder
        ->add('gender', 'choice', array(
            'label'       => 'Gender',
            'choices' => array('male', 'female'),
            'empty_value' => 'Please select option'
    ));