Ich habe eine Klasse mit einer Multiple-Choice-Eigenschaft:Symfony 2.7 Wahl Rückruf funktioniert nicht in Form
...
/**
* @ORM\Column(type="array", name="majority_types")
* @Constraints\Choice(callback="getAvailableMajorityTypes", multiple="true")
*/
private $majorityTypes;
...
public static function getAvailableMajorityTypes()
{
return array(
self::SIMPLE_MAJORITY,
self::UNANIMITY_MAJORITY,
self::THREE_FIFTHS_MAJORITY,
self::ONE_THIRD_MAJORITY,
self::FOUR_FIFTHS_MAJORITY
);
}
...
ich auch eine Formularklasse für diese Klasse hat:
...
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
...
->add('majorityTypes', ChoiceType::class, array(
'multiple' => true,
))
...
->getForm();
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyClass',
));
}
Aber die Entscheidungen von getAvailableMajorityTypes
werden nicht gerendert.
Ich habe einfach die folgenden Schritte ausgeführt: http://symfony.com/doc/master/reference/constraints/Choice.html#supplying-the-choices-with-a-callback-function, aber aus irgendeinem Grund funktioniert es nicht.
Edit:
Ich sehe, dass unter Verwendung statischer Entscheidungen als Anmerkungen weder Werke (choices={"foo1", "foo2"}
). Die einzige Methode, die es funktioniert, besteht darin, die Auswahlmöglichkeiten direkt in der Methode add
beim Erstellen des Formulars zu übergeben. Ich habe das Problem noch nicht herausgefunden.
Aus dem letzten Teil der Frage: * Die einzige Möglichkeit, die es funktioniert, besteht darin, die Auswahlmöglichkeiten direkt in der add-Methode beim Erstellen des Formulars * zu übergeben. Das ist es, was Sie vorschlagen. Ist es nicht? – Manolo
Ja tatsächlich. Die anderen Dinge, die Sie versucht haben, beziehen sich auf die Validierung des übermittelten Formulars, nicht auf das Rendering des HTML-Formulars. – Guillaume
Es macht Sinn. – Manolo