【问题标题】:Symfony set value checked on a form type choice在表单类型选择上检查 Symfony 设置值
【发布时间】:2013-11-03 09:17:56
【问题描述】:

我使用 FormBuilder 和 Symfony 创建了一个表单,例如:

$builder
            ->add('timeBarOpen', 'time', array('label' => 'Ouverture Bar', 'attr' => array('class' => 'form-control')))
            ->add('timeBarClose', 'time', array('label' => 'Fermeture Bar', 'attr' => array('class' => 'form-control')))
            ->add('timeStartHappyHour', 'time', array('label' => 'Début Happy Hour *', 'attr' => array('class' => 'form-control')))
            ->add('timeEndHappyHour', 'time', array('label' => 'Fin Happy Hour *', 'attr' => array('class' => 'form-control')))
            ->add('day', 'choice', [
                'choices' => $days,
                'multiple' => true,
                'expanded' => true,
                'label' => 'Jour(s) *',
            ])
        ;

$days 是一个数组:

$days = array(
            'Monday'    => 'Lundi',
            'Tuesday'   => 'Mardi',
            'Wednesday' => 'Mercredi',
            'Thursday'  => 'Jeudi',
            'Friday'    => 'Vendredi',
            'Saturday'  => 'Samedi',
            'Sunday'    => 'Dimanche',
        );

所以,这个字段类型“选择”会生成多个复选框,我需要在创建表单时将它们全部默认检查。

我该怎么做?

【问题讨论】:

    标签: forms symfony


    【解决方案1】:

    您可以使用 data 参数指定一些默认选项,在您的情况下指定一个数组,并使用可用选项的 keys

    $builder
        ->add('day', 'choice', [
            'choices' => $days,
            'multiple' => true,
            'expanded' => true,
            'label' => 'Jour(s) *',
            'data' => array_keys($days)
        ])
    ;
    

    【讨论】:

    • 直截了当,功能强大! ;-)
    • 好吧,值得一提的是,它只有在您为新操作和编辑操作有单独的 FormType 时才有效,否则在编辑表单中它将覆盖数据库值
    【解决方案2】:

    我在 ChoiceType 下拉列表中遇到了类似的问题,我希望能够在其中设置选定的值,但我不知道该怎么做。我从@ThomasPiard 的回答中弄清楚了。谢谢!

    在我的示例中,我设置了“选择”,而“数据”设置为数组的值(不是键)。这很重要——因为我一开始不明白为什么它不起作用。

    这是我的示例:

    ->add('pet_type', ChoiceType::class, array( // Select Pet Type.
            'choices' => array(
                    'Substitution' => 'sub',
                    'Equivalency' => 'equiv',
            ),
            'label' => 'Select Petition Type:',
            'attr' => array(
                    'onchange' => 'changedPetType()',
            ),
            'placeholder' => 'Choose an option',
            'data' => 'equiv',
    ))
    

    希望它能帮助遇到同样问题的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 2017-07-04
      • 2017-01-09
      • 1970-01-01
      相关资源
      最近更新 更多