2017-06-14 5 views
2

Ich versuche, eine Checkbox-Liste in Symfony 3. Dieser Code zu bauen:Symfony 3 weird "Wahl" Fehler

$choices = [ 
     'a' => 'fsssssss', 
    ]; 

    $builder->add('memberships', ChoiceType::class, [ 
     'choices' => $choices, 
     'expanded' => true, 
     'multiple' => false 
    ]); 

den folgenden Fehler zurück: Abfangbare Fatal Error: Object der Klasse Lehre \ ORM \ PersistentCollection nicht zu bespannen in Anbieter umgewandelt werden könnte/symfony/symfony/src/symfony/Component/Form/Choice/ArrayChoiceList.php (Linie 73)

Wenn ich zwei weitere Optionen hinzufügen, geht der Fehler weg und die Feld wird korrekt angezeigt:

$choices = [ 
     'a' => 'fsssssss', 
     'd' => 'fsssssss', 
     'g' => 'fsssssss', 
    ]; 

    $builder->add('memberships', ChoiceType::class, [ 
     'choices' => $choices, 
     'expanded' => true, 
     'multiple' => false 
    ]); 

Tatsächlich gibt es viele Kombinationen, die funktionieren und viele, die nicht funktionieren; Ich habe kein Muster gesehen.

Mache ich etwas falsch? Gibt es einen Cache, den ich löschen muss?

+0

versuchen Sie es unter "multiple" => false ':' 'choice_label' => Funktion ($ value, $ key, $ index) { return $ key; } ' –

+0

Es half auch nicht :( – user3429660

+0

fsssssss der Schlüssel ist, und nicht der Wert für Ihre Wahl, müssen Sie es es –

Antwort

0

Genau diese Frage zu schließen:

Wenn Sie ein Formular mit der data_class Option und ein Formularfeld verwenden, stellt eine Eigenschaft einer Entität, die durch Entscheidungen ausgewählt bekommen sollten Sie EntityType verwenden können:

$builder->add('memberships', EntityType::class, [ 
     'class'  => MyClass::class, 
     'choices' => $choices, 
     'expanded' => true, 
     'multiple' => false 
    ]);