Intereting Posts
PHP получает выбранное значение формы выбора Как установить oacle instantclient и pdo_oci на машину ubuntu? mysqli_error () ожидает ровно 1 параметр, 0 PHP – Сортировка многомерного массива другим массивом Настройка заголовков для тестовых блоков CakePHP PHP – подсчитать повторяющиеся значения в двухмерном массиве, а затем отобразить только уникальные значения со счетчиком Показать комментарии на домашней странице WordPress Как вы исправляете Nginx автоматически 301 перенаправление на тот же URL с завершающим косой чертой? Учение. Почему я получаю persistentCollection и пустой массив на ManyToMany? amazon s3 – загрузка изображений вместо отображения в браузере Необходимо отслеживать время простоя ПК с помощью PHP ping и отображения времени вниз D: HH: MM htaccess (без перенаправления) (папка to index.php) –enable-phar = shared Нужно ли перекомпилировать PHP для установки Composer? Как хранить сеансы базы данных в CodeIgniter с несколькими базами данных? Освободите элементы пустого массива на лету

Как включить в форму сущности некоторые поля из другого объекта?

Я хочу использовать поля из нескольких объектов в одной форме, могу ли я это сделать? Например, я хочу добавить в поле формы одной формы из поля ProfileType и name профиля и из поля CountryType . Эти поля должны быть простой строкой ( text ).

Как мне это сделать? Благодаря!

ПРИМЕЧАНИЕ. Я не могу использовать тип сущности , потому что Symfony предоставляет только флажки , переключатели и выбирает для него, однако мне нужно использовать простое текстовое поле.

Чтобы включить поля от связанных объектов в форме, вы встраиваете собственный тип формы для каждого связанного объекта. Теоретически можно отображать и обновлять все данные для сложного объекта со многими отношениями в одной форме. На практике это для отношений toMany может усложниться, но это просто для отношений между One. См. « Встроенные формы». Вставка одного объекта в документацию Symfony Forms.

Например, в типе формы для вашего основного объекта:

 public function buildForm(FormBuilderInterface $builder, array $options) { ... $builder->add('profile', new ProfileType()); $builder->add('country', new CountryType()); ... } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( ..., 'cascade_validation' => true, )); } 

Затем в вашей ветке вы можете добавить нужные вам поля:

 {{ form_widget(form.profile.surname) }} {{ form_widget(form.country.name) }} 

Предполагая, что ваш ProfileType и CountryType добавят другие поля в свои формы, тогда, если вы используете «form_rest (form)» в своей ветке, вы получите другие поля, которые вы не хотите, или если вы не используете form_rest, то в зависимости от того, какая версия symfony вы используете, вы можете получить ошибки. Существует несколько способов справиться с этим.

Я иногда использую 'form_widget (_token)' вместо 'form_rest (form)', чтобы обойти эту проблему. Однако я не знаю, можете ли вы полагаться на это, продолжая работать в будущем. Вы можете обернуть «form_rest (form)» в скрытый div, поскольку он обычно используется только для добавления скрытого поля «_token», и в этом случае вы не хотите видеть другие поля Profile и Country. В этом случае значения скрытых объектов по-прежнему отображаются в форму и обратно с любыми соответствующими служебными данными, но значения не могут быть изменены.

В качестве альтернативы вы можете иметь несколько типов форм для своих профилей и стран и использовать соответствующий для контекста. Я не знаю, для чего нужна ваша форма, но, например, у вас может быть EditThingProfileType и EditThingCountryType для использования в методе buildForm () выше, каждый из которых добавляет только одно поле, которое требуется в вашей форме.