1

我有一个构建使用 ajax 的表单的模块。

如果我使用 hook_menu() 创建一个页面来显示表单,那么一切都很好.. ajax 正在工作,等等。

function models_quicksearch_menu() {
$items = array();

  // Repopulate a dropdown based on form state.
  $items['examplex_dropdown'] = array(
    'title' => 'Dependent dropdown',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('quicksearch_form'),
    'access callback' => TRUE,
    'weight' => 4,
  );

  return $items;
}

如果我创建一个块来显示表单,则表单的 ajax 部分不起作用:

function models_quicksearch_block_view($delta = '') {
  $block = array();
  switch ($delta) {
    case 'quicksearch_form':
  $block['content'] = drupal_get_form('quicksearch_form');
  break;
}
return $block;
}

当我使用 block 方法时,ajax.js 一开始没有加载,所以我加载了 js:

function models_quicksearch_process(&$variables, $hook) {
    drupal_add_library('system', 'drupal.ajax');
    drupal_add_library('system', 'jquery.form');
}

但是,如果我使用块方法,则 ajax 部分不起作用。似乎块版本的表单元素中缺少“ajax-processed”类。在“页面”版本中,有“ajax-processed”。

我正在使用 Drupal 7。

关于如何解决这个问题的任何想法?谢谢你。

编辑:看来问题是我直接在 html.tpl.php 中打印块。如果我在 page.tpl.php 中打印它就可以了。

4

0 回答 0