Настройка Webform модуля Drupal для форм
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': '+7 (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 дня.







