8

我使用 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',
        );

因此,此字段类型“选择”会生成多个复选框,我需要在创建表单时将它们全部选中。

我怎样才能做到这一点?

4

2 回答 2

14

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

$builder
    ->add('day', 'choice', [
        'choices' => $days,
        'multiple' => true,
        'expanded' => true,
        'label' => 'Jour(s) *',
        'data' => array_keys($days)
    ])
;
于 2013-10-24T15:35:02.033 回答
4

我在 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',
))

希望它会帮助有同样问题的人。

于 2016-08-24T23:15:59.997 回答