Веб-разработка, логотип Eqsash

Создание форм в Drupal при помощи Form API, простой пример

Для получения различных данных от пользователей на сайте используются всевозможные формы. Такими формами могут быть какие угодно типы форм: текстовые поля, списки, радиокнопки, чекбоксы и т.д. Неудивительно, что в такой мощной системе как Drupal существует специальное API для удобного и быстрого создания форм, называется оно - Form API.

drupal-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 может иметь три функции:

Таким образом, было рассмотрено, что такое Form API в Друпал, а также как создать простую форму при помощи этого инструментария.

Оставить заявку

Последние статьи

Популярные разделы