hook_form_alter - Внесение изменений перед отрисовкой формы
В массиве #validate мы храним все callback’и функций валидации.
В массиве #submit мы храним все callback’и функций отправки формы.
process - массив функций, которые вызываются при обработки элемента
after_build Массив имен функций, который будет вызываться после построения формы или элемента.(гарантирует что изменения в колбеке применяться в самую последнюю очередь
формы: метод валидейт в классе формы
филда: свойство валидейт к полю и класс-валидатор
theme - название темы, которая будет рендерить форму или элемент вместо стандартной темы
theme_wrappers – это массив функций, которые вызываются после формирования render array и позволяют скорректировать параметры этого массива. Этот параметр необходим, когда нужно скорректировать элемент формы не меняя основную его суть и параметры.
a. Как создать свой?
текстареа, текстфилд, селект, радио, чекбокс, баттон, файл и т.д.
- отнаследовать класс от FormElement
Создайте новую форму или используйте hook_form_alter, чтобы изменить существующую форму.
Добавьте элемент рендеринга ‘#ajax’ в поле, которое должно запускать функцию обратного вызова.
Определите имя функции обратного вызова и тип события, которое вызовет ее.
Когда событие запускается путем изменения значения поля формы, вызывается функция обратного вызова.
Функция обратного вызова позволяет получить доступ к массиву $ form и FormstateInterface и должна, наконец, вернуть массив рендеринга или некоторую разметку html или может выполнить команду AJAX.
Зависимое поле – поле, которое принимает любое из состояний формы, например как скрытие или показ.
Влияющее поле – поле, от которого зависит состояние зависимого поля.
Итак, что бы Drupal понимал, что для зависимого поля необходимо отслеживать состояние, то для данного поля необходимо предать в массив с ключом «#states» необходимое состояние элемента формы, а так же ID влияющего поля с необходимым значением данного (влияющего) поля.
‘#states’ => array( // сказали Drupal, что для данного поля необходимо отслеживать состояние
‘visible’ => array( // указали необходимое состояние
‘:input[name=”field_select”]’ => array(‘value’ => 1), // указали имя влияющего поля поля и его значение, при котором данное состояние должно сработать
Объявить свой js файл в *.libraries.yml файле своего модуля, а потом добавить JS к форме
$form[‘#attached’][‘library’][] = ‘yourmodule/yourlibrary’;
раздел документа, позволяющий пользователю вводить информацию для передачи на сервер.