Drupal 9 ajax.

Главные вкладки

Аватар пользователя ady1503 ady1503 3 октября 2022 в 9:31

Привет.

Вопрос мой связан с запросами ajax в форме.

У меня есть checkbox который при активном статусе активирует поле которая была disabled.

Моя проблема в том что на это поле работает другой ajax запрос, который работает как надо. Но, когда первый запрос активирует поле добавляет в ID поля символы и меняет ID и другой ajax запрос перестаёт работать.

Пример:

Поле до id="edit-result-field-0-value"

Поле после id ="edit-field-result-0-value--Otl6DXAuLos"

Подскажите пожалуйста как с этим бороться?

Я пробовал и чистый ajax и form API ajax.

Спасибо за помощь.

Лучший ответ

Аватар пользователя ady1503 ady1503 3 октября 2022 в 22:23
1

Я понял мою ошибку.

Спасибо всем за помощь и извините за то что потратил ваше время.

Я просто мешал оба вида ajax в drupal: Traditional AJAX, and the Drupal Form API #ajax api.

И здесь есть очень хорошее объяснения про разницу между ними:

https://drupal.stackexchange.com/questions/281584/ajax-callback-inside-h...

Всё заработало.

Ещё раз спасибо.

Комментарии

Аватар пользователя ady1503 ady1503 3 октября 2022 в 9:47

По этой ссылке

https://www.drupal.org/forum/support/module-development-and-code-questio...

Есть вся информация.

У меня не получалось и спросил, потом дошёл что вся проблема в том что меняется ID поля.
Поэтому второй ajax не сработает.

Спасибо большое.

Аватар пользователя marassa marassa 3 октября 2022 в 10:20

ady1503 wrote: У меня есть checkbox который при активном статусе активирует поле которая была disabled.

Возможно я чего-то не понимаю, но при чем здесь Ajax? Простой javascript, который работает чисто на клиенте и не требует никаких запросов к серверу. Чего я не понимаю?

Аватар пользователя ady1503 ady1503 3 октября 2022 в 10:59

Я не видел возможности сделать это через javascript. Потому что при первом запуске формы моё поле емеет статус disabled. Она не активная, серая и плюс она не обязательна не require, но после того как делать checkbox в статус 1, поле активируется и становится обязательна require.
И как я понял форма уже создана и для того чтобы менять статусы полей после первого запуска надо использовать ajax.

И самое трудное если поле емеет статус access=false и disabled при первом запуске, трудно через ajax запрос задать ей статусы access=true и enabled.

Может быть я плохо объяснил но неделю ищу ответ как через ajax работать с статусами поля: "unset, disable, access=false", из drupal формы. Я сумел сделать функционал при помощи prefix и sufix, и возвращать только этот wraper, но проблема как я выше сказал drupal при срабатывания ajax запроса меняет ID поля, добавляя новые символы в конце ID этого поля.

Спасибо большое за помощь.

Аватар пользователя gun_dose gun_dose 3 октября 2022 в 14:38

То. что айдишники меняются, это нормально. Так и должно быть. Другие аяксы отваливаются по какой-то другой причине.

Аватар пользователя OldWarrior OldWarrior 3 октября 2022 в 19:39

ady1503 wrote:Я не видел возможности сделать это через javascript. Потому что при первом запуске формы моё поле емеет статус disabled. Она не активная, серая и плюс она не обязательна не require, но после того как делать checkbox в статус 1, поле активируется и становится обязательна require...

Просто используйте Form API #states, можно без AJAX'а.

Аватар пользователя ady1503 ady1503 3 октября 2022 в 22:23
1

Я понял мою ошибку.

Спасибо всем за помощь и извините за то что потратил ваше время.

Я просто мешал оба вида ajax в drupal: Traditional AJAX, and the Drupal Form API #ajax api.

И здесь есть очень хорошее объяснения про разницу между ними:

https://drupal.stackexchange.com/questions/281584/ajax-callback-inside-h...

Всё заработало.

Ещё раз спасибо.