我开始使用模块 Field Group 和 Field Collection 创建一个新的内容类型,并且成功了!
但是,我想在我的表单中添加自动完成字段,但我不知道如何做到这一点。也许使用 hook_form_alter 但是我无法在我的字段集合中添加我的自定义字段。
你知道怎么做吗?
非常感谢
PS:我使用 D7
要将 auto_complete 添加到 from 字段,您需要执行以下操作:
第一个:使用 hook_for_alter() 将 auto_complete 路径添加到文本字段
function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id)
{
if($form_id == "YOUR-CONTENT-TYPE_node_form")
{
$form['field_YOUR-FIELD']['und'][0]['value']['#autocomplete_path'] = 'my-module/autocomplete/path';
}
}
第二:使用 hook_menu() 定义您作为#autocomplete_path 属性传递给字段的菜单回调
function YOUR_MODULE_menu()
{
$items = array();
$items['my-module/autocomplete/path'] = array(
'page callback' => 'your_module_autocomplete_callback',
'access callback' => TRUE,
'weight' => 1,
'type' => MENU_CALLBACK,
);
return $items;
}
第三个也是最后一个:添加菜单回调函数,将项目返回到文本字段
function your_module_autocomplete_callback($string)
{
$items = array();
$query = db_select('node', 'n');
$value = $query->fields('n', array('title'));
$value = $query->condition(db_and()->condition('n.type', 'YOUR_CONTENT_TYPE')->condition('title', '%' . db_like($string) . '%', 'LIKE'))->orderRandom()->execute();
$i = 0;
foreach ($value as $val)
{
$items[$val->name] = check_plain($val->name);
}
print drupal_json_output($items);
exit();
}
希望这会有所帮助……穆罕默德。
适合多个字段的更新代码。
function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id)
{
if($form_id == "YOUR-CONTENT-TYPE_node_form")
{
foreach($form['field_match']['und'][0]['field_adversaires']['und'] as $k =>$v)
{
if(is_numeric($k))
{
$form['field_match']['und'][0]['field_adversaires']['und'][$k]['value']['#autocomplete_path'] = 'basketfacile_type/autocomplete';
}
}
}
}
希望它对你有用……穆罕默德。