FormType ChoiceType (select) пресет данных не работает в представлении Symfony 3.4

В приложении 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 );

При удалении этой строки работает предустановленное значение (но не трансформатор. Очевидно ...). Таким образом, возникает вопрос: почему преобразователь данных мешает настройке заданного значения?

Вы можете добавить пример $ choicesArray и пример $ choicesPreset.

revengeance 09.01.2019 10:17

Возможный дубликат Значение по умолчанию для поля выбора

revengeance 09.01.2019 10:18

@revengeance спасибо. Я хотел вставить вары и решил, что это не проблема, хотя использованный преобразователь данных есть. Пожалуйста, посмотрите мою правку.

user3440145 09.01.2019 10:45
JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
0
3
1 259
1

Ответы 1

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

Другие вопросы по теме