Подскажите пожалуйста, как лучше всего организовать заполнение скрытого поля некой динамической переменной? Форма представляет из себя заявку. У заявки должен быть номер, который формируется автоматически. Номер заявки имеет вид: №пп_YYYY.
№пп - порядковый номер заявки в году. Инкрементное значение, начинающееся с 1 для каждого нового года.
YYYY - соответственно, год.
Через токены можно подгрузить текущий год. А вот с номером, обнуляющимся каждый год - проблема. Токенов подходящих не вижу.
Можно, конечно, через JS+Ajax организовать заполнение поля. Но может сам модуль предоставляет какие-то возможности? На худой конец какие-нибудь хуки?
Комментарии
У вебформы есть номер отправления. Его токеном в скрытое поле поставьте.
Номер будет присвоен после записи в базу, т.е. уже после сабмита формы, и он не обнуляется раз в год.
Но ход мысли правльный.
Дело в т.н. race condition - два пользователя сабмитят форму с небольшим интервалом по времени, и если присваивать номер на фронте, то он продублируется в их отправлениях.
Лучше поручить друпалу разруливать уникальность номеров.
Т.е., я предполагаю какой-то такой алгоритм:
как-то так
Спасибо за идеи!
В итоге сделал похоже, но немного по-своему.
Использую хук hook_webform_submission_presave ($node, $submission) - он как раз меняет данные перед сохранением. Считываю поле с номером заявки, парсю его, сравниваю текущий год с тем, что в номере и в зависимости от этого генерю следующий номер.