Form API Drupal создание форм на Друпал

Опубликовано: 12.06.2017

видео Form API Drupal создание форм на Друпал

Form API в Drupal 7 урок 1 (вступление)

В прошлых уроках мы познакомились с хуками hook_block_info() , hook_block_view() , hook_menu() , hook_permission() и теперь можем создавать программно сколько угодно страниц и блоков. А в этом уроке мы ознакомимся с Form API Drupal 7 для создания форм. Мы будем создавать форму для администрирования функций модуля и постараемся использовать как можно больше уже известных нам хуков, чтобы закрепить умения.


Как создавать свои формы и изменять существующие в Drupal 7 (Form API))

Для начала мы выведем 3 блока, думаю для вас это не составит труда.

function sitemade_block_info(){ $blocks = array(); //инициализируем пустой массив $blocks[1]['info'] = 'Список пользователей'; //заголовок блока для админки $blocks[2]['info'] = 'Список нод'; $blocks[3]['info'] = 'Список терминов'; return $blocks; //возвращаем список блоков } function sitemade_block_view($delta = ''){ $block = array(); //инициализируем пустой массив блока switch ($delta){ case 1: //такая же delta как мы возвращали в hook_block_info() $block['subject'] = 'Пользователи'; //выводим заголовок блока $block['content'] = ''; //инициализируем строковую переменную $query = db_select('users', 'u') //запрос выборки пользователей ->fields('u', array('uid', 'name')) //выбор полей ->orderBy('u.uid', 'DESC') //сортируем по убыванию ->range(0, 5) //выбор пяти пользователей ->execute(); //запрос к БД $users = $query->fetchAll(PDO::FETCH_ASSOC); //обрабатывает запрос в виде массива foreach($users as $user){ $block['content'] .='<div><a href="' . base_path() . 'user/' . $user['uid'] . '">' . $user['name'] . '</a></div>'; // base_path() - функция возвращает путь к корню сайта } break; case 2: $block['subject'] = 'Ноды'; //выводим заголовок блока $block['content'] = ''; $query = db_select('node', 'n') ->fields('n', array('nid', 'title')) ->orderBy('n.nid', 'DESC') ->range(0, 10) ->execute(); $nodes = $query->fetchAll(PDO::FETCH_ASSOC); foreach($nodes as $node){ $block['content'] .='<div><a href="' . base_path() . 'node/' . $node['nid'] . '">' . $node['title'] . '</a></div>'; } break; case 3: $block['subject'] = 'Термины'; //выводим заголовок блока $block['content'] = ''; $query = db_select('taxonomy_term_data', 't') ->fields('t', array('tid', 'name')) ->orderBy('t.tid', 'DESC') ->range(0, 10) ->execute(); $terms = $query->fetchAll(PDO::FETCH_ASSOC); foreach($terms as $term){ $block['content'] .='<div><a href="' . base_path() . 'taxonomy/term/' . $term['tid'] . '">' . $term['name'] . '</a></div>'; } break; } return $block; }

Очищаем кеш, чтобы наши новые блоки появились в админке. Выводим эти блоки в левый сайдбар:

rss