Сгенерировать скрытые поля формы(как у всех форм админки)

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

Аватар пользователя Кришпер Кришпер 11 мая 2018 в 17:04

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

Ну, вот, например, я хочу сделать post запрос к форме удаления ноды на странице "node/NID/delete"
Что бы создать post запрос по урлке этой формы мне нужно сгенерировать её скрытые поля form_id, form_token, form_build_id и мб confirm. Можно ли это сделать или вся идея так себе?

Но на самом деле я просто хочу повторить формы для редактирования цен опций атрибутов у товаров.

Лучший ответ

Аватар пользователя gun_dose gun_dose 15 мая 2018 в 9:39
1

Да, они есть в генераторе форм. Повторюсь - поля не просто присутствуют в HTML-кода формы, из значения записываются в БД в таблицу cache_form и при отправке формы значения сверяются со значениями, записанными в эту таблицу.

Комментарии

Аватар пользователя fairrandir fairrandir 11 мая 2018 в 17:32

Тупой вариант в лоб:
1. Определить свой роут через hook_menu
2. Передавать ему в аргументы nid
3. В callback функции вызывать node_delete

Варианты повеселее - ставить модули для REST.

Аватар пользователя gun_dose gun_dose 11 мая 2018 в 20:38

Для отправки аякс запросов на роуты форм используются, как ни странно, аякс-формы.

Если же хочется слать пост-данные типа как с формы, то нужно учитывать, что токен создаётся во время генерации формы и никак иначе.

Аватар пользователя Кришпер Кришпер 14 мая 2018 в 9:07

gun_dose, я и хочу узнать, как все нужные поля генерятся. Значит, токен генерится рендомно по алгоритму, ок, узнать бы какой ф-цией или где копать. А form_id, form_build_id и confirm как генерятся?

Аватар пользователя gun_dose gun_dose 14 мая 2018 в 10:06

Смысл в том, что они генерируются во время генерации формы и кладутся в кэш. Затем при отправке формы они валидируются.

Аватар пользователя gun_dose gun_dose 15 мая 2018 в 9:39
1

Да, они есть в генераторе форм. Повторюсь - поля не просто присутствуют в HTML-кода формы, из значения записываются в БД в таблицу cache_form и при отправке формы значения сверяются со значениями, записанными в эту таблицу.