2016-12-13 2 views
3

Ich habe ein Problem mit meinem Formulartyp. Ich habe eine Entitätsaktivität und eine andere Entitätsklasse. Es ist in ManyToMany. Wenn ich das Formular anzeigen, ist es in ChoiceType, aber ich möchte es in CheckboxType sein. Also habe ich:Symfony Transformation ChoiceType in CheckboxType

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('libelle') 
     ->add('horraire') 
     ->add('horraireDebut') 
     ->add('horraireFin') 
     ->add('description') 
     ->add('classes'); 
} 

Es ist ein ChoiceType angezeigt aber ich möchte ein CheckboxType, also habe ich dies:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('libelle') 
     ->add('horraire') 
     ->add('horraireDebut') 
     ->add('horraireFin') 
     ->add('description') 
     ->add('classes', CheckboxType::class); 
} 

aber nur, zeigt ein Kontrollkästchen, während ich mehrere Aufnahmen haben (die scheint gut mit dem ersten Code).

Mein 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> 

Wie kann ich eine Checkbox Linie oder eine Checkbox Dropdown bekommen?

Danke!

+0

Können Sie genauer beschreiben, was Sie brauchen? Sie sagen "Checkbox-Linie oder Checkbox Dropdown", aber ich bin mir nicht sicher, was das bedeutet. Wenn Sie ein Bild von dem hinzufügen, was Sie benötigen, wäre das hilfreich. –

Antwort

2

Nur multiple und expanded Möglichkeiten nutzen, dies zusammen (Ref) zu erreichen:

$builder->add('classes', null, array(
    'multiple' => true, 
    'expanded' => true, 
)); 

Dann gerendert wird Kontrollkästchen.

Beachten Sie, dass null Wert Mittelwert EntityType::class für den Fall, dass Sie Doctrine ORM verwenden. Andernfalls verwenden Sie EntityType::class und 'class' => Entity::class Option.

+0

Vielen Dank, es funktioniert. –

+0

Bitte akzeptieren Sie diese Antwort, wenn Sie Ihr Problem gelöst oder die Lösung gefunden haben, danke. – yceruto

0

Um zu erreichen, was Sie suchen, können Sie auch die EntityType mit einem Query Builder versuchen könnte:

->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'); 
     } 
    )) 
Verwandte Themen