1

Некоторые из того, как мне удалось заставить его работать. Но результат не совпадает с автозаполнением.Специальная форма и автозаполнение Drupal

проводки мой последний код сейчас,

текстовое поле код

$form['town'] = array(
'#type' => 'textfield', 
'#required' => TRUE, 
'#autocomplete_path' => 'hfind/town/autocomplete', 
); 

функция меню код

function hfind_menu() { 
    $items = array(); 
    $items['hfind/town/autocomplete'] = array (
    'title' => 'Autocomplete for cities', 
    'page callback' => 'hfind_town_autocomplete', 
    'access arguments' => array('use autocomplete'), 
    'type' => MENU_CALLBACK 
    ); 
return $items; 
} 

обратного вызова кода функции

function hfind_town_autocomplete($string){ 
    $matches = array(); 
    $result = db_select('towns', 't') 
    ->fields('t', array('town_name')) 
    ->condition('town_name', '%' . db_like($string) . '%', 'LIKE') 
    ->execute(); 
    foreach ($result as $row) { 
    $matches[$row->city] = check_plain($row->city); 
    } 
    drupal_json_output($matches); 
} 

Я надеюсь, что это ма y окончательное редактирование.

Текущая ситуация, автозаполнение работает

Адрес страницы/H Найдите город/автозаполнения/MTW

, но не может найти какие-либо данные из базы данных. Я нашел причину и не смог ее исправить. Это потому, что в последней функции, которую я добавил выше, строка $ должна быть «поисковым запросом», но она всегда запрашивает базу данных как «автозаполнение». Я имею в виду переменную $ string, всегда имеющую значение «autocomplete» вместо введенного пользователем значения.

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

Пожалуйста, пожалуйста, кто-то мне помочь ..

ответ

0
`drupal_json_output()` instead of `drupal_to_js` and remove `print` . 
<code> 
hook_menu() { 
$items['cnetusers/autocomplete'] = array(
    'title' => 'Auto complete path', 
    'page callback' => 'cnetusers_employees_autocomplete', 
    'page arguments' => array(2, 3, 4, 5), 
    'access arguments' => array('access user profiles'), 
    'type' => MENU_CALLBACK, 
); 
return $item; 
} 
// my autocomplete function is like this 
function cnetusers_employees_autocomplete() { 
    // write your sql query 
    $matches["$record->ename $record->elname [id: $record->uid]"] = $value; 
    } 
    if (empty($matches)) { 
    $matches[''] = t('No matching records found.'); 
    } 
    drupal_json_output($matches); 
} 

$form['disc_info']['approval'] = array(
     '#type' => 'textfield', 
     '#title' => t('Approval By'), 
     '#autocomplete_path' => 'cnetusers/autocomplete', 
    ); 
</code> 
+0

Я пытался. Все еще не работает. Но я знаю, что это исправление не для моей проблемы, потому что когда я печатаю, я не вижу никакого запроса с текстом. Функция автозаполнения не активна в текстовом поле. –

+0

попытайтесь проверить путь для функции автозаполнения tht, которую вы дали. Я отредактировал свой ответ с помощью небольшого примера, и я работаю для меня. –

+0

Спасибо Ranjeet, попробовал и пытался много решений, ничего не работало. –