Drupal 8: Попереднє заповнення полів форми елементами масиву $_REQUEST

Інколи виникає необхідність надати для заповнення користувачу форму, поля якої динамічно ініціалізуються певними значеннями. У Drupal 7, при використанні для побудови форми модуля Webform, вирішити це завдання за допомогою токенів не становить проблеми.

У Drupal 8, станом на момент написання цієї статті, модуля Webform не було. Натомість у Drupal 8 "з коробки" вбудований модуль Contact Forms, що по можливостях нічим не поступається Webform (що бозбавляє особливого сенсу портувати його під Drupal 8). Проте, добитися роботу токениів у дефоултних значеннях полів Contact Forms мені так і не вдалося.

Враховуючи те, що я робив свій перший проект на "вісімці", на пошук готового рішення я потратив декілька годин. І коли я вже майже змирився із необхідність написання власного модуля з необхідним функціоналом, я натрапив на модуль Prepopulate.

Як виявилося, цей модуль появився ще у 4-й версії, проте мені ніколи не доводилось його використовувати (через підтримку тих же токенів у Webform).

Модуль не має жодних налаштувань, надзвичайно простий у використані і працює з формами практично всіх нод.

Для того, щоб заповнити поле форми, необхідно вказати потрібне значення у параметрі - елементі масиву edit з індексом, що відповідає машинній назві поля.

Наприклад, для заповнення поля Ім'я з машинною назвою field_name форми з машинною назвою person значенням John, необхідно передати насипну стрічку параметрів:
http://site.com/contact/person?edit[field_name]=John

Усе просто. Проте, про всяк випадок, я вирішив зробити для себе та для "потребуючих" пам'ятку, та оформити її у цю статтю.

Додати новий коментар

Фото Капча
Введіть символи з картинки.