Forms 在表单类型选择上选中Symfony集合值

Forms 在表单类型选择上选中Symfony集合值,forms,symfony,Forms,Symfony,我使用带有Symfony的FormBuilder创建表单,如下所示: $builder ->add('timeBarOpen', 'time', array('label' => 'Ouverture Bar', 'attr' => array('class' => 'form-control'))) ->add('timeBarClose', 'time', array('label' => 'Fermetur

我使用带有Symfony的FormBuilder创建表单,如下所示:

$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',
        );
因此,这个字段类型“choice”会生成多个复选框,我需要在创建表单时由defaut将它们全部选中


如何操作?

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

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

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

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

更多信息,请参阅doc:directive,power!;-)好的,值得一提的是,它只在new和edit操作有一个单独的FormType时工作,否则在edit form中它将覆盖DB值