我一直致力于创建一个带有自动填充字段的自定义表单,该字段将在数据库中搜索特定内容类型的字段值并返回结果,以便用户可以为该输入框选择一个。
我的主要问题是实际上知道如何定位数据库中的特定字段。
数据库信息位于名为“'部件”的内容类型中。在该内容类型中,有一个名为“交叉引用”的字段。
我们有数以千计的零件,每个零件都有许多交叉参考值作为交叉参考'字段设置为无限制。我需要自定义表单的自动填充功能才能查看这些“交叉参考”。值。
菜单和页面
function frontcross_menu(){
$items['frontcross'] = array(
'title' => 'Front Cross',
'page callback' => 'frontcross_page_callback',
'access arguments' => array('access content'),
'description' => t('Front cross'),
'type' => MENU_CALLBACK,
);
$items['cross/autocomplete'] = array(
'title' => 'Autocomplete for cross',
'page callback' => '_cross_autocomplete',
'access arguments' => array('use autocomplete'),
'type' => MENU_CALLBACK
);
return $items;
}
function frontcross_page_callback(){
return drupal_get_form('frontcross_form');
}
表格
function frontcross_form($form,&$form_state){
$form = array(
'#method' => 'post','#default_value' => 'Status Message',
'#id' => 'frontcross_form',
'field_across_reference_value' => array(
'#type' => 'textfield',
'#required' => FALSE,
'#autocomplete_path' => 'cross/autocomplete',
),
'submit' => array(
'#type' => 'submit',
'#value' => t('Submit'),
'#name' => t('Submit'),
'#id' => t('Submit'),
),
);
$form["#submit"][] = 'frontcross_submit';
return $form;
}
提交
此函数将表单信息放入目录结果页面上的URL查询字符串
function frontcross_submit($form,&$form_state){
$options = array('' => TRUE);
$options['query']['field_cross_reference_value'] = $frontcrossval;
$frontcrossval = trim($form_state['values']['field_across_reference_value']);
if($frontcrossval){
$options['query']['field_cross_reference_value'] = $frontcrossval;
}
$form_state['redirect'] = url($GLOBALS['base_url'].'/cross-reference',$options);
}
自动填充功能
这是我坚持的部分。它需要在数据库中查找属于内容类型的值' Part'及其领域的交叉参考'它有多个值。
我留下了以下代码作为我找到的例子。
function _cross_autocomplete($string) {
$matches = array();
$result = db_select('cities', 'c')
->fields('c', array('city'))
->condition('city', '%' . db_like($string) . '%', 'LIKE')
->execute();
foreach ($result as $row) {
$matches[$row->city] = check_plain($row->city);
}
drupal_json_output($matches);
}
我希望我的解释足够简洁。非常感谢帮助。
由于 乔