Drupal 7 и автозаполнямые поля ввода

Капельки воды или предисловие

Итак, в одной из предыдущих статей сего бложика я уже достаточно подробно описывал возможности модуля под названием Search Autocomplete. Потому сегодня я покажу читателям упрощенный пример реализации аналогичного автоматически дополняемого а-ля заполняемого поля ввода.

Приступаем к действию или очередной пример кода

<?php

/**
 * Имя условно-учебного модуля будет demospisok.
 */

// Форма с единственным полем ввода.
function demospisok_myform($form, &$form_state) {
  $form['searchtitle'] = array(
    '#type' => 'textfield',
    '#title' => 'Поиск по заголовку',
    '#autocomplete_path' => 'demospisok/autocomplete',
  );
  return $form;
}

// Регистрирую новые системные пути.
function demospisok_menu() {
  // Для обработчика.
  $items['demospisok/autocomplete'] = array(
    'page callback' => 'demospisok_autocomplete',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
  // Для формы.
  $items['demospisok'] = array(
    'title' => 'Автозавершение ввода',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('demospisok_myform'),
    'access callback' => true,
  );
  return $items;
}

// Обработчик: обычный друпаловский SQL-запрос только с "лайком".
// Чисто для демонстрации вывожу заголовки материалов абстрактного сайтика.
// По идее так можно список городов страны выводить, решать иные схожие задачки.
function demospisok_autocomplete($text = '') {
  $itogi = db_select('node', 'n')
    ->fields('n', array('title'))
    ->condition('title', '%' . db_like($text) . '%', 'LIKE')
    ->range(0, 5)
    ->execute();

  $matches = array();
  foreach ($itogi as $n) :
    $matches[$n->title] = check_plain($n->title);
  endforeach;
 
  drupal_json_output($matches);
}

Теперь внесу несколько оговорок для придирчивых читателей.

  1. Во-первых это не полноценный модуль для использования на рабочем сайте, это всего лишь очредной сниппет в мою онлайн-коллекцию на память. Т.е. халявного модуля не будет.
  2. Во-вторых после активации будет создаваться дополнтельный пууть вида http://www.example.com/demospisok/autocomplete. Но насколько знаю это не так уж страшно - схожий путь создает и упомянутый в предисловии Search Autocomplete: http://www.example.com/search_autocomplete/поисковая_фраза/autocomplete.
  3. В-третьих после вывода результа запроса у меня отсутствует дальнейшая обработка информации.

Снимок экрана напоследок

Drupal 7 автозаполняемое поле ввода

Итого: имеем одно автозаполняемое поле ввода, вид из под дизайна дефолтного Bartik.



Банковская гарантия в уфе по 44. Банковская гарантия 44 фз mf-agency.ru.

© 2012-2014 Druweb.ru. Вы можете спокойно копировать любые материалы сайта только при наличии обратной ссылки.