2012-09-06 25 views
0

난 내 자신의 노드 참조 사용자 정의 필드를 구축을 위해 노력하고 함께 - 나는 배우기 위해 나는이 건물입니다, 이렇게 이미 거기에 여러 프로젝트를 알고 ... :)사용자 정의 필드 autcomplete

내 문제가있다 autocomplete path, 그것은 트리거되지 않습니다. noderefcreate 프로젝트를 확인하고 해당 프로젝트를 기반으로 솔루션을 구현했습니다. 그러나 여전히. 내가 방화범을 체크 할 때 아무런 반응이 보이지 않는다. 당신은 자동차 경쟁이 제안을 어디에서 방법을 정의 할 필요가

function nodereference_field_widget_info() { 
    return array(
    'nodereference_nodereference_form' => array(
     'label' => t('Node Reference Form'), 
     'field types' => array('nodereference'), 
     'behaviors' => array(
     'multiple values' => FIELD_BEHAVIOR_DEFAULT, 
     'default value' => FIELD_BEHAVIOR_DEFAULT, 
    ), 
     'settings' => array(
     'autocomplete_match' => 'contains', 
     'autocomplete_path' => 'nodereference/autocomplete', 
    ), 
    ), 
); 
} 

function nodereference_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) { 
    if ($instance['widget']['type'] == 'nodereference_nodereference_form') { 
    $widget = $instance['widget']; 
    $settings = $widget['settings']; 

    $element += array(
     '#type' => 'textfield', 
     '#default_value' => isset($items[$delta]['nid']) ? $items[$delta]['nid'] : NULL, 
     '#autocomplete_path' => $instance['widget']['settings']['autocomplete_path'], 
    ); 
    } 

    return array('nid' => $element); 
} 

답변

0

:

여기 내 코드입니다. 다음과 같이 수행 할 수 있습니다.

/** 
* implements hook_menu 
*/ 
function your_module_name_menu() { 
    $items['master_place/autocomplete'] = array(
    'page callback' => '_your_module_name_autocomplete', 
    'access arguments' => array('access example autocomplete'), 
    'type' => MENU_CALLBACK 
); 
    return $items; 
} 

/** 
* Auto complete method implementation 
* @param $string 
*/ 
function _your_module_name_autocomplete($string) { 
    $matches = array(); 

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

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

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

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