В приложении 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 также выглядит нормально в Контроллере. Однако шаблон отображает заполнитель.
Я не знаю, как отлаживать шаблоны веток, и если бы я знал, я бы не знал, что искать. Любые намеки на то, что здесь может пойти не так, очень приветствуются.
Обновлено:
Проверяя варианты выбора и предустановленные значения, я обнаружил, что проблема на самом деле исходит не от самого поля формы или какой-либо из его опций, а от преобразователя данных. У меня есть эта строка прямо под постетом кода выше:
$builder->get('my_entity')->addModelTransformer( $this->myEntityToNumberTransformer );
При удалении этой строки работает предустановленное значение (но не трансформатор. Очевидно ...). Таким образом, возникает вопрос: почему преобразователь данных мешает настройке заданного значения?
Возможный дубликат Значение по умолчанию для поля выбора
@revengeance спасибо. Я хотел вставить вары и решил, что это не проблема, хотя использованный преобразователь данных есть. Пожалуйста, посмотрите мою правку.




Проблема была не в поле или предустановленных значениях, а в преобразователе данных, о котором я упоминал в своей редакции. Исправление преобразователя данных также устранило проблему с отсутствием предустановленных значений.
Вы можете добавить пример $ choicesArray и пример $ choicesPreset.