Symfony2 :: DependentEntity — зависимый выпадающий список

Автор: | 26.07.2015

Нередка ситуация, когда в классе формы требуется создать несколько элементов <select>, значения которых зависят друг от друга. Типичный пример — страны-города.

На гитхабе есть решения, но они в составе бандлов. Предлагаю своё решение.

Сразу, как будет выглядеть класс нашей формы:

Два поля — страны и города — список городов будет формироваться в зависимости от выбранной страны. Поле city имеет тип my_dependent_entity, который нам предстоит ещё создать.

Полный листинг класса DependentEntityType

Опции $resolver->setDefaults говорят сами за себя, обязательные из них — это class, property, parent_field. Так-же класс использует трансформер EntityToIdTransformer, трансформирующий коллекцию сущностей в массив, его листинг:

Следующим шагом будет создание виджета-отображения нашего типа my_dependent_entity.

Чтобы ядро Symfony «подхватило» этот файл, надо ему о нём сообщить. Например в файле app/config/config.yml:

Для выполнения ajax запросов необходим контроллер:

Регистрируем его в routing.yml

Осталось только зарегистрировать созданную нами форму, как сервис с тэгом form.type, и можно пользоваться