Получить данные запроса (GET) в формате Symfony (5) без использования data_class

#symfony

#symfony

Вопрос:

Я создаю FormType для фильтрации продуктов на странице коллекции. Вы можете установить несколько полей выбора, которые делают другие автоматически заполненными или ненужными. Я хочу иметь возможность манипулировать FormType на основе данных, например, при использовании объекта data_class. Я не использую data_class, потому что поиск не является сохраняемым объектом, который сохраняется в базе данных. Я использую форму GET.

Например, 2 поля выбора:

  • Категория
  • ProductType

При настройке категории некоторые типы продуктов становятся ненужными. Поэтому я хочу не показывать это. Для этого в FormType мне нужны данные запроса (GET), но я не могу найти способ сделать это.

Ответ №1:

Для извлечения данных из формы вы можете использовать $form->getData() .
Поскольку вы находитесь в GET контексте, я подозреваю, что вы можете воспользоваться FormEvents (присмотритесь к событию POST_SET_DATA) и избавиться от ненужных значений.

Еще одна вещь, на которую я хотел бы обратить внимание, это то, что вы все равно можете использовать какой-то объект, который не сохраняется в DB, например, DTO или что-то еще.

Формы и сущности никак не связаны, ни в использовании, ни в намерениях.

Комментарии:

1. Я не смог получить данные через $form->getData() . Вероятно, потому, что к FormType нет data_class подключения. Я использовал createFormBuilder inside для контроллера вместо createForm FormType . В моем контроллере я использовал объект запроса для изменения формы.