我的表单类型有问题。我有一个实体活动和一个其他实体类。它在 ManyToMany 中。当我显示表单时,它位于ChoiceType
,但我希望它位于CheckboxType
。所以我:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('libelle')
->add('horraire')
->add('horraireDebut')
->add('horraireFin')
->add('description')
->add('classes');
}
它显示ChoiceType
,但我想要CheckboxType
,所以我将其更改为:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('libelle')
->add('horraire')
->add('horraireDebut')
->add('horraireFin')
->add('description')
->add('classes', CheckboxType::class);
}
但是这只显示一个复选框,而我有几个录音(第一个代码看起来很好)。
我的form.html.twig:
<div class="form-group{% if form.classes.vars.errors|length %} has-error{% endif %}">
<label for="{{ form.classes.vars.id }}" class="col-sm-3 control-label no-padding-right required">Classes <span class="red">*</span></label>
<div class="col-sm-9">
{{ form_widget(form.classes,{'attr': {'class': 'form-control'}}) }}
{{ form_errors(form.classes) }}
</div>
如何获得复选框行或复选框下拉列表?
谢谢!
答案 0 :(得分:2)
只需使用multiple
和expanded
选项即可实现此目标(Ref):
$builder->add('classes', null, array(
'multiple' => true,
'expanded' => true,
));
然后将呈现复选框。
请注意,如果您使用Doctrine ORM,null
值意味着EntityType::class
。否则,请使用EntityType::class
和'class' => Entity::class
选项。
答案 1 :(得分:0)
为了实现您的目标,您还可以使用查询构建器尝试EntityType:
->add('classes', EntityType::class, array(
'by_reference' => true,
'multiple' => true,
'expanded' => false,
'class' => 'AppBundle\Entity\Class',
'property' => 'name',
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
$qb = $er->createQueryBuilder('c');
return $qb->orderBy('c.name', 'ASC');
}
))