Создание форм в Drupal при помощи Form API, простой пример
Для получения различных данных от пользователей на сайте используются всевозможные формы. Такими формами могут быть какие угодно типы форм: текстовые поля, списки, радиокнопки, чекбоксы и т.д. Неудивительно, что в такой мощной системе как Drupal существует специальное API для удобного и быстрого создания форм, называется оно - Form API.
Что такое Form API в Drupal? Это целая отдельная тема, в которой должен разбираться любой более менее опытный Друпал разработчик. Сюда входит различный функционал для работы с полями: создание, проверка, отправка, модификация и прочее. Создавать формы вручную в Друпал – это неправильный путь, следует использовать Form API.
Как создать форму в Drupal? Допустим у нас есть модуль mymodule, в котором необходимо создать форму по адресу /form-test. Приведем пример простой формы:
// реализация хука hook_menu
function mymodule_menu() {
$items = array();
$items['form-test'] = array(
// заголовок
'title' => 'Пример формы',
// указание использовать формы Drupal
'page callback' => 'drupal_get_form',
// функция, которая создает форму
'page arguments' => array(' mymodule_get_form'),
// разрешение доступа всем
'access callback' => true,
);
return $items;
}
function mymodule_get_form($form, &$form_state) {
// заполнение массива form данными
// ключ массива - это название поля, по которому можно позже получить значение поля
$form['textfield'] = array(
// заголовок поля
'#title' => 'Введите текст',
// описание поля
'#description' => 'Описание для текстового поля',
// тип поля
'#type' => 'textfield',
// обязательно ли для заполнения
'#required' => true,
);
$form['file'] = array(
'#title' => 'Выберите файл',
'#description' => 'Введите описание для файла',
'#type' => 'file',
'#name' => 'files[]',
);
$form['textarea'] = array(
'#title' => 'Введите сообщение',
'#description' => 'Описание для сообщения',
'#type' => 'textarea',
);
// можно разместить любой html, если указать markup
$form['html'] = array(
'#markup' => '<div><span>Можно разместить любой HTML</span></div>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Отправить',
);
return $form;
}
function mymodule_get_form_validate($form, &$form_state) {
// пример проверки, если поле textarea пустое, тогда делается установка ошибки на это поле
if ($form_state['values']['textarea'] == '') {
form_set_error('textarea', 'Заполните поле');
}
}
function mymodule_get_form_submit($form, &$form_state) {
// создание массива для данных, которые можно использовать позже как угодно
$data = array();
foreach ($form_state['values'] as $field) {
// заполенение массива данными
$data[] = $field;
}
// установка сообщения и перенаправление формы на главную страницу сайта
drupal_set_message('Данные успешно получены и обработаны');
$form_state['redirect'] = '';
}
Как видно, форма в Drupal может иметь три функции:
- функция создания формы, например, mymodule_get_form;
- функция валидации формы, например, mymodule_get_form_validate – в ней можно сделать проверку значений формы на корректность;
- функция отправки или подтверждения формы, например, mymodule_get_form_submit – в этой функции можно сделать с полученными данными то, что необходимо.
Таким образом, было рассмотрено, что такое Form API в Друпал, а также как создать простую форму при помощи этого инструментария.
Последние статьи
- 03.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 3. Все операторы PHP с примерами, с выводом работы кода на экран.
- 02.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 2. Типы данных в PHP с примерами.
- 02.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 1. Коротко о языке веб-программирования PHP. Основы синтаксиса.
- 09.11.23ИТ / Базы данных Ошибки при переходе с MySQL 5.6 на 5.7 и как их исправить - импорт дампа БД завершился ошибкой или не работает INSERT. Отключение строгого режима STRICT_TRANS_TABLES или использование IGNORE
- 08.07.22ИТ / Разное Конвертация офисных файлов DOC, DOCX, DOCM, RTF в форматы DOCX, DOCM, DOC, RTF, PDF, HTML, XML, TXT без потерь и изменения разметки