我使用带有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 。
我该怎么做?
答案 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',
))
希望它可以帮助有同样问题的人。