Создание поля с автодополнением (autocomplete)

Чтобы наделить поле функцией автодополнения нужно:

1. Добавить полю свойство #autocomplete_path и прописать в нём путь, по которому будут возвращаться данные:

function mymodule_myform() {
  $form['myfield'] = array(
    '#type' => 'textfield',
    '#title' => 'My field',
    '#autocomplete_path' => 'mymodule/autocomplete', // <--
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit',
  );
  return $form;
}

2. Зарегистрировать в hook_menu() указанный путь:

function mymodule_menu() {
  $items['mymodule/autocomplete'] = array(
    'page callback' => 'mymodule_autocomplete',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

3. В соответствующей callback функции вернуть данные в json формате:

function mymodule_autocomplete($string) {
  // для примера, возвратим заголовки нод
  $result = db_select('node', 'n')
    ->fields('n', array('title'))
    ->condition('title', '%' . db_like($string) . '%', 'LIKE')
    ->range(0, 10)
    ->execute();
 
  $matches = array();
  foreach ($result as $row) {
    $matches[$row->title] = check_plain($row->title);
  }
 
  drupal_json_output($matches);
}

Поле с автодополнением при помощи jQuery UI Autocomplete.

Написанное актуально для
Drupal 7
Теги:
работа с формами
Добавлено: 29 Июля 2018 20:16:40 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...