Возможно ли сохранить значение обычного текста, когда ссылка на сущность не существует?


У меня есть поле ссылки на сущность пользователя. Когда я ввожу имя, но сущность/пользователь не существует, я хотел бы сохранить имя в виде обычного текстового значения. Возможно ли это?

Спасибо.

 1
Author: Smos, 2013-01-31

1 answers

Вместо добавления поля сущности пользователя вы можете создать обычное текстовое поле, а затем использовать функцию formalter, чтобы сделать его автозаполненным.

Шаги будут следующими.

Создайте пользовательский модуль.

Сначала вам нужно будет создать пункт меню, чтобы получить список пользователей, для этого вы можете создать hook_menu function

function module_name_menu() {  
  $items['userlist/autocomplete'] = array(
    'page callback' => '_module_name_autocomplete',
    'access arguments' => array('you can define the permissions here'),
    'type' => MENU_CALLBACK
  );
  return $items;
}

Следующим шагом будет создание функции обратного вызова.

function _module_name_autocomplete($string) {
  $matches = array();

  // Some fantasy DB table which holds cities
  $query = db_select('users', 'u');

  // Select rows that match the string
  $return = $query
    ->fields('u', array('name'))
    ->condition('c.name', '%' . db_like($string) . '%', 'LIKE')
    ->range(0, 10)
    ->execute();

  // add matches to $matches  
  foreach ($return as $row) {
    $matches[$row->name] = check_plain($row->name);
  }

  // return for JS
  drupal_json_output($matches);
}

Последним шагом будет создание функции изменения формы для

function module_name_form_page_node_form_alter(&$form, &$form_state, $form_id) {
  $form['field_name']['#autocomplete_path'] = 'userlist/autocomplete';
}

Это изменит ваше текстовое поле на поле автозаполнения. вы также сможете ввести любое другое имя.

 4
Author: Mohammed Shameem, 2013-01-31 16:07:13