首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有自动完成功能的自定义字段

具有自动完成功能的自定义字段
EN

Stack Overflow用户
提问于 2012-09-07 03:47:21
回答 1查看 621关注 0票数 0

我正在尝试构建自己的节点引用自定义域-我知道有几个项目已经做到了这一点,我正在构建这个是为了学习…:)

我的问题是自动完成路径,它没有被触发,我已经检查了noderefcreate项目并基于该项目实现了我的解决方案。但是,当我检查firebug时,没有任何东西被触发。

下面是我的代码:

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-20 00:25:51

您需要定义自动竞争将从何处获取建议的方法。可以这样做:

代码语言:javascript
复制
/**
 * 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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12307312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档