0

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

这是生成选择的代码:

    $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”,但我想避免这种情况,因为我不想修改选项的显示顺序。

4

2 回答 2

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
));
于 2013-03-27T20:23:50.413 回答
-1

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

    $builder
        ->add('gender', 'choice', array(
            'label'       => 'Gender',
            'choices' => array('male', 'female'),
            'empty_value' => 'Please select option'
    ));
于 2014-03-10T21:22:25.687 回答