#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 . В моем контроллере я использовал объект запроса для изменения формы.