FormType ChoiceType (выберите) предустановка данных не работает в представлении Symfony 3.4 - PullRequest
0 голосов
/ 09 января 2019

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

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

1 Ответ

0 голосов
/ 09 января 2019

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

...