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