В приложении Symfony 3.4 я определил класс MyFormType с таким элементом ChoiceType
$builder->add(
'my_field_1',
ChoiceType::class,
array(
'label' => 'My Label',
'placeholder' => 'nothing selected',
'choices' => $choicesArray,
'multiple' => false,
'expanded' => false,
'required' => false,
'mapped' => true,
'data' => $choicesPreset,
)
);
В контроллере я создаю форму, передавая необходимый объект для предварительной установки данных, а затем передаю созданное представление в шаблон веточки.
В шаблоне форма отображается ОК. Все работает, за исключением того, что заданное значение элемента выбора ChoiceType не установлено. Поле отображается с выбранным параметром заполнителя.
Все остальные элементы той же формы загружают свои заданные значения без проблем. Однако ни один из них не является ChoiceType.
При отладке я вижу, что заданное значение является правильным при создании класса формы, а также оно установлено в поле (хотя я не уверен, какие именно свойства должны быть установлены в элементе FormBuilder).
При отладке предустановленное значение ChoiceType также выглядит нормально в контроллере.
Однако шаблон отображает заполнитель.
Я не уверен, как отлаживать шаблоны веточек, и если бы я знал, я бы не знал, что искать.
Любые намеки на то, что здесь может пойти не так, приветствуются.
EDIT:
При проверке выбора и предустановленных значений я обнаружил, что проблема на самом деле не в самом поле формы или любом из его параметров, а в преобразователе данных.
У меня эта строка прямо под кодом постет выше:
$builder->get('my_entity')->addModelTransformer( $this->myEntityToNumberTransformer );
При удалении этой строки предустановленное значение работает (хотя не преобразователь. Очевидно ...). Таким образом, вопрос остро стоит: почему преобразователь данных мешает настройке предустановленного значения?