Для передачи значения choices для ChoiceType в Symfony форму из контроллера можно воспользоваться несколькими способами. Рассмотрим два наиболее распространенных подхода:
1. Установка параметра "choices" в методе "createForm" контроллера:
$choices = ['choice1' => 'Choice 1', 'choice2' => 'Choice 2', 'choice3' => 'Choice 3']; $form = $this->createForm(MyFormType::class, null, ['choices' => $choices]);
В данном примере мы создаем переменную $choices, которая хранит массив с вариантами выбора. Затем передаем этот массив в метод "createForm" в качестве третьего аргумента. Когда Symfony будет формировать форму на основе класса MyFormType, она будет использовать переданное значение choices.
2. Использование форматера формы:
$builder = $this->createFormBuilder(); $choices = ['choice1' => 'Choice 1', 'choice2' => 'Choice 2', 'choice3' => 'Choice 3']; $builder->add('my_field', ChoiceType::class, [ 'choices' => $choices, 'choice_label' => function ($choice, $key, $value) { return $value; }, ]); $form = $builder->getForm();
В этом случае мы используем форматер формы для динамической установки значений choices. Мы используем анонимную функцию в качестве значения 'choice_label', которая принимает каждое значение выбора, его ключ и значение и возвращает значение. В результате это позволяет нам указывать достаточно сложную логику для выбора опций, включая условные операторы или запросы к базе данных.
Оба подхода рабочие и выбор между ними зависит от ваших конкретных потребностей и предпочтений.