我是Drupal的新手,我正在尝试创建一个包含自动完成功能的动态文本字段的表单。此自动填充功能将从数据库中获取值。
我有以下代码:
表格:
function site_finder_form($form, &$form_state) {
$form['site_finder_company_name'] = array(
'#type' => 'textfield',
'#autocomplete_path' => 'companies/autocomplete',
);
/* Additional Form Fields here */
return $form;
}
挂钩菜单:
function site_finder_menu()
{
// path with autocomplete function for companies
$items['companies/autocomplete'] = array(
'page callback' => '_site_finder_autocomplete',
'access arguments' => array('access companies autocomplete'),
'type' => MENU_CALLBACK
);
return $items;
}
自动填充功能
function _site_finder_autocomplete($string) {
$matches = array();
// Select Rows that match the query
$companies = db_select('company_info', 'e')
->fields('e', array('Name'))
->condition('Name', '%' . db_like($string) . '%', 'LIKE')
->execute();
// Query DB to get matches
foreach ($companies as $company){
$matches[$company->Name] = check_plain($company->Name);
}
drupal_json_output($matches);
}
我已经完成了几个教程,看看自动完成功能在Drupal中是如何工作的,而且我已经遵循Hook菜单和自动完成功能的正确命名约定,所以我并不完全确定当我在文本字段中输入值时,为什么这不起作用。
非常感谢任何帮助!
答案 0 :(得分:0)
我意识到您必须清除Drupal缓存才能使Hook菜单更改生效。