【问题标题】:Symfony2: setting the default option of a selectSymfony2:设置选择的默认选项
【发布时间】:2013-03-27 19:17:11
【问题描述】:

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

这是生成选择的代码:

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

【问题讨论】:

  • 可能数组应该从0而不是1开始?否则它是一个关联数组。
  • 在Entity的构造函数中做。设置默认值,然后将实体绑定到表单。

标签: symfony symfony-forms


【解决方案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
));

【讨论】:

  • 选项“preferred_choices”不能是整数;它必须以某种方式可以遍历。它可以是数组、可遍历、可调用、字符串或 PropertyPath。如果没有,你会得到一个 InvalidOptionsException。
【解决方案2】:

您想添加不带值的选项。您可以使用选项empty_value 执行此操作。

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

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多