Добрый день.
Есть 3 выпадающих списка:
- страна
- регион
- город
Есть контроллер, есть форма. При выборе в выпадающем списке страны отправляем ajax запрос, получаем список регионов принадлежащих стране, обновляем выпадающий список с выбором регионов, после выбора региона прогружаем список городов.
Основная проблема в том что в симфони в formtype для выпадающего списка надо указать choices, иначе форма будет не валидна при сабмите. Как правильно делать ? Поделитесь пожалуйста примером.
Спасибо. Статью видел. По ней делал. Проблема с addEventListener для 3 поля -(
Получилось вот так pastebin.com/6tWEzeCb
Но после выбора floorId не отрабатывает функция $formAddRoom
P.S. А это вообще нормально когда аяксом приходит перерендереная страница и мы из неё кусок вытаскиваем и вставляем на фронтэнд ?
Аякс делал вот так pastebin.com/jPFjTNGa
Вам нужно в контроллере создать экшены для ajax-запросов, которые будут возвращать список ID и названий дочерних сущностей по ID родительской сущности. Например, в JSON-формате.
В javascript-коде вешаете обработчик на событие 'change' select'ов. При выборе элемента select'а, берете выбранный ID и посылаете его через ajax-запрос на выбор списка дочерних сущностей. Получаете список, очищаете подчиненный select и заполняете его полученными данными.
При построении формы в симфони, используйте событие FormEvents::PRE_SET_DATA. В остальном там вроде все нормально.
@ssenkevich К сожалению этот вариант не проходит. В симфони при описании формы в formtype для choise указываются доступные варианты для выбора в элементе choices = array(....). Если аяксом селект заполнять нужными значениями форма валидацию не проходит.
А с PRE_SET_DATA можно пример какой, не понял как использовать -(
У вас есть возможность создать свой form type (аля ajax-select), сделать для него свой form view, дата трансформеры, да все что угодно. В чем проблема то?
Проблема в ajax подгрузке вариантов выпадающего списка. На form type я генерю первый список из трёх, ещё 2 надо аяксом подгружать на основе выбранного значения.
@WarGot это никак не касается symfony. Если вы не хотите конечно сделать полностью реюзебальное решение (автогенерация маршрутов для получения списков, можно вообще все автоматизировать) можно просто прописывать ссылки с которых получать результаты а js-ом уже это дело разруливать.
@Fesor Умею я опции аяксом заполнять -) Тут проблема с тем что симфони требует предопределять доступные для селекта опции, если туда пихать что-нить своё форма при сабмите будет не валидна. Секьюрность, все дела -)