Налаштування модуля Drupal Webform для форм
Webform — найфункціональніший модуль форм для Drupal. Конструктор форм із 50+ типами елементів, умовна логіка, багатоетапні форми, обробники відправок (email, webhook, CRM), експорт відповідей у CSV/Excel.
Встановлення
composer require drupal/webform
drush en webform webform_ui -y
drush cr
Створення форми
Структура → Webforms → Додати webform. Назва, машинне ім'я, опис.
Конструктор форм: Elements → додаємо поля перетаскуванням або через кнопку. Типи елементів:
- Текстові: Textfield, Textarea, Email, Tel, URL, Number
- Вибір: Select, Radios, Checkboxes, Buttons
- Дата/час: Date, Time, DateTime
- Файли: File, Managed file
- Складні: Address, Composite element, Signature
- Контейнери: Fieldset, Details, Section, Flexbox
YAML-конфігурація елементів
Webform зберігає структуру форми в YAML, що дозволяє версіонувати в git:
# Конфігурація contact_form.webform
elements: |
name:
'#type': textfield
'#title': 'Ім'я'
'#required': true
'#maxlength': 100
email:
'#type': email
'#title': 'Email'
'#required': true
phone:
'#type': tel
'#title': 'Телефон'
'#input_mask': '+38 (999) 999-99-99'
message:
'#type': textarea
'#title': 'Повідомлення'
'#required': true
'#minlength': 10
'#rows': 5
department:
'#type': select
'#title': 'Відділ'
'#options':
sales: Продажи
support: Підтримка
other: Інше
Умовна логіка
company_name:
'#type': textfield
'#title': 'Назва компанії'
'#states':
visible:
':input[name="client_type"]':
value: business
required:
':input[name="client_type"]':
value: business
Email-обробник
Налаштування → Emails/Handlers → Додати Email:
- To:
[webform_submission:values:email](динамічно з форми) - Subject:
Нова заявка від [webform_submission:values:name] - Body: використовувати шаблон із токенами Drupal
Webhook-обробник
composer require drupal/webform_rest
drush en webform_rest -y
Або користувацький обробник:
// src/Plugin/WebformHandler/CrmWebformHandler.php
namespace Drupal\mymodule\Plugin\WebformHandler;
use Drupal\webform\Plugin\WebformHandlerBase;
use Drupal\webform\WebformSubmissionInterface;
/**
* @WebformHandler(
* id = "crm_integration",
* label = @Translation("CRM Integration"),
* category = @Translation("External"),
* description = @Translation("Sends submission to CRM"),
* cardinality = WebformHandlerBase::CARDINALITY_SINGLE,
* results = WebformHandlerBase::RESULTS_PROCESSED,
* )
*/
class CrmWebformHandler extends WebformHandlerBase {
public function postSave(WebformSubmissionInterface $webform_submission, bool $update): void {
$data = $webform_submission->getData();
\Drupal::httpClient()->post('https://crm.example.com/api/leads', [
'json' => [
'name' => $data['name'],
'email' => $data['email'],
'message' => $data['message'],
'source' => 'drupal-webform',
],
]);
}
}
Вставка форми на сторінку
{# У twig-шаблоні #}
{{ drupal_entity('webform', 'contact_form') }}
Або через блок: Структура → Розміщення блоків → Webform block.
Експорт відповідей
Webforms → [форма] → Results → Download. Формати: CSV, Excel, JSON. Підтримує фільтрацію за датою та статусом.
Терміни
Створення та налаштування форми з обробником email та базовою умовною логікою — 3–5 годин. Користувацький обробник для CRM-інтеграції — плюс 1–2 дні.







