При использовании Symfony 4.3 FormBuilderInterface я создаю форму. Важно, чтобы я не использовал кодированные классы со структурой данных.
У меня есть ChoiceType с несколькими значениями, который нуждается в некоторой помощи при заполнении.
Создание формы в порядке. Даже возвращение (несколько) значений из формы работает отлично. Однако, когда я пытаюсь предварительно заполнить форму с помощью setData ... Это немного шизофренично.
Вот
Дано:
$arr = ['Person1' => 'John', 'Person123' => 'George'];
$form->add('RelatedToPerson', ChoiceType::class, [ 'multiple' => true, 'choices' => $arr]);
Теперь мы хотим установить данные для этого множественного выбора с помощью:
$chosen = ['Person123'];
Итак, я делаю:
$form->get('RelatedToPerson')->setData($chosen);
Что дает: «Примечание: преобразование массива в строку»
Почему? Это массив строк. Это не говорит, что ему нужно.
Может быть, для этого нужна строка через запятую?
Я делаю:
$form->get($item['name'])->setData(implode(', ', $chosen));
и получите:
"Невозможно преобразовать значение для пути свойства" [RelatedToPerson] ": ожидается массив."
Вывод: ему нужен массив, но когда я даю ему один ... это не правильный тип?
Что я должен сделать, чтобы решить эту проблему?