ChoiceType
в Symfony немного отличается:
массив выбора имеет структуру: {displayed value} => {actual value}
(это, вероятно, связано с тем, что значения часто достаточно сложны, чемстрока, в то время как отображаемые значения почти всегда являются строками - или, по крайней мере, это не помешает превратить их в строки.)
Я предполагаю, что у вас есть [theme1,theme2,theme3]
, что является сокращением для
[
0 => theme1,
1 => theme2,
2 => theme3,
]
Если темы являются строками, вы можете просто удвоить их:
[
theme1 => theme1,
theme2 => theme2,
theme3 => theme3,
]
, если они являются сущностями, использовать EntityType
вместо ChoiceType
(https://symfony.com/doc/current/reference/forms/types/entity.html#reference-forms-entity-choices)
$builder->add('themes', EntityType::class, [
'class' => Theme::class, // your class here!
'choices' => $options['themes'],
'choice_label' => function($theme) {
return $theme->getName(); // <-- use your display value
},
]);
однако вам, возможно, придется добавить toString к объекту Theme или использовать путь свойства вместо анонимной функции в опции choice_label
.