• урок
  • pantey

Form API - часть 1. Базовые понятия и создание простейшей формы.

24.11.2014

Сегодня приступаем к изучению одной из важнейших составляющих Drupal – Form API. Что же такое Form API? Form API – это некий набор функций Drupal, которые позволяют нам с вами, в данном случае я имею ввиду разработчиков, создавать собственные формы, как присуще всем формам со своими функциями валидации и обработки формы.

В первой части мы с вами построим простейшую форму на основе Form API с двумя текстовыми полями и кнопкой отправки формы. Естественно, для дальнейшего прочтения статьи вам необходимо знание PHP, без него вы вряд ли, что поймете.

Итак, давайте сразу разберемся, что нам может понадобиться для создания своей формы? В первую очередь, нам необходима страница, где мы будем выводить элементы формы и собственно сама форма.

Приступим, как вы наверное уже знаете организация страниц в Drupal осуществляется с помощью

hook_menu()

Поэтому для начала создадим страницу для вывода нашей формы, естественно все действия производим в своем модуле (Как создать свой модуль? ). В данной статье модуль будет называться как myform:

myform.info
  1. name = Myform
  2. description = Form Api
  3. core = 7.x
  4. package = Other
myform.module
  1. <?php
  2. /**
  3.  * implements hook_menu()
  4.  */
  5. function myform_menu(){
  6. $items = array();
  7. $items['myform'] = array(
  8.  
  9. 'title' => 'Form API',
  10. 'page callback' => 'myform_page',
  11. 'access callback' => TRUE
  12.  
  13. );
  14.  
  15. return $items;
  16. }
  17.  
  18. function myform_page() {
  19. return t('Страница для формы');
  20. }

Далее активируем модуль и видим, что у нас появилась новая страница

Создали страницу, где будем выводить форму

Теперь приступим к созданию формы.За организацию формы отвечает :

hook_form()

Поэтому изменим callback для нашей страницы на

myform_form

Далее в этой функции нам необходимо описать элементы формы, в данном случае мы будем описывать два текстовых поля и кнопку отправки формы.

Хочу заметить, что при описании элементов формы каждый из элементов должен содержать обязательные значения, количество обязательных значений зависит от типа элемента. Тип элемента формы является обязательным для всех элементов формы.

Теперь наш модуль выглядит так (не забудьте после изменения названия функций в своем модуле - чистить кэш drupal):

Файл myform.module
  1. <?php
  2. /**
  3.  * implements hook_menu()
  4.  */
  5. function myform_menu(){
  6. $items = array();
  7. $items['myform'] = array(
  8. 'title' => 'Form API',
  9. 'page callback' => 'myform_form', // изменили callback на myform_form
  10. 'access callback' => TRUE
  11. );
  12.  
  13. return $items;
  14. }
  15.  
  16. /**
  17.  * Callback myform
  18.  */
  19. function myform_form() {
  20.  
  21. // Описали первое текстовое поле
  22. $form['onetextfield'] = array(
  23. '#type' => 'textfield', // тип поля
  24. '#title' => t('первое текстовое поле'), // заголовок поля
  25. );
  26.  
  27. // Описали второе текстовое поле
  28. $form['twotextfield'] = array(
  29. '#type' => 'textfield', // тип поля
  30. '#title' => t('второе текстовое поле'), // заголовок поля
  31. );
  32.  
  33. // Описали кнопку отправки форму
  34. $form['submit'] = array(
  35. '#type' => 'submit', // тип поля
  36. '#value' => t('отправить форму'), // текст кнопки формы
  37. );
  38. return $form;
  39. }

Смотрим результат

Создали свою первую форму с использованием Form API

Видим, что мы добились того, что и было необходимо, мы создали два текстовых поля и кнопку отправки формы и заметьте без единого написания кода HTML.

Итак, из первой части вы должны понять принцип построения формы, а так же как описывать простейшие элементы формы. В следующих уроках, мы с вами рассмотрим функции валидации и обработки формы, а так же будем рассматривать все имеющиеся элементы формы, а пока на этом все.

Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (6)

Profile picture for user Гость
havert
10.03.2015

Здравствуйте, сделал так как в статье, выводится только заголовок Form API
а остальные поля не выводятся

Profile picture for user pantey
pantey
11.03.2015

посмотрите, правильно ли у вас написана функция в 'page calback' в hook_menu

Profile picture for user Гость
Mist
13.04.2015

А русский текст в функцию t() имеет смысл заключать? Как понимаю, только английский текст переводится на все остальные языки. А если пишем русский, то мы его не сможем перевести на другие языки через интерфейс админки. Или это не так?

Profile picture for user pantey
pantey
13.04.2015

не так, переводится любой язык.

Profile picture for user Гость
Arcad
11.12.2015

А как определяется направление перевода, точнее - на какой понятно из URL к примеру, а с какого языка первоисточник не понятно???

Profile picture for user pantey
pantey
11.12.2015

перевод будет использоваться для языков, который вы включили в настройках локализации вашего сайта.