在表单类型选项上检查Symfony设置值

时间:2013-10-24 15:11:07

标签: forms symfony

我使用带有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检查 all

我该怎么做?

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:3)

我在ChoiceType下拉列表中遇到了类似的问题,我希望能够设置所选的值,但我无法弄清楚如何做到这一点。我从@ThomasPiard的回答中弄清楚了。谢谢!

在我的例子中,我设置'choices','data'设置为数组的值(而不是键)。这很重要 - 因为我无法弄清楚为什么它最初不起作用。

这是我的样本:

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

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