У меня есть таксономия с 2 уровнями

City1
-Park1
-Park2
-Park3 
City2
-Park4
-Park5
-Park6

В моей форме я создал поле, которое ссылается на эту таксономию с виджетом автозаполнения. У меня также есть второе поле, где пользователь выбирает город.

Я хотел бы динамически изменять значение автозаполнения в зависимости от выбранного города. Это означает, что если пользователь выбирает City1, автозаполнение будет фильтровать только значения в City1.

После проверки формы я обнаружил, что виджет entity_autocomplete имеет атрибут #selection_handler. Можно ли будет изменить этот обработчик и как-то отправить значение выбранного города?

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

Какие-либо предложения ?

1
apaderno 1 Сен 2017 в 12:24

1 ответ

Вы можете отказаться от использования entity_autocomplete и вместо этого использовать настраиваемое поле автозаполнения. Вот пример использования, вы можете перевести эту страницу с русского на ваш язык. Также пример содержит прикрепленные исходные файлы.

https://niklan.net/blog/77

В примере вы можете увидеть контроллер, который создает список со значениями. Я предполагаю, что вы можете передать параметр контроллеру (city_id), и SQL-запрос вернет набор результатов в соответствии с параметром.

Вы можете добавить параметр в контроллер внутри функции buildForm() вашей формы. Также вы можете пересоздать элемент автозаполнения с новым параметром после выбора города из списка.

0
Yakimkin Roman 1 Сен 2017 в 13:22
Как я уже упоминал в своем вопросе, будет лучше, если мне не придется использовать текстовое поле, поскольку оно не имеет никакой проверки, и мне придется сделать это самому. Есть ли другой способ добиться этого?
 – 
113408
4 Сен 2017 в 08:05