Ajax表单在页面上工作,但不在块上工作

时间:2012-08-17 09:02:04

标签: ajax drupal

我有一个模块,用于构建使用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;
}

当我使用块方法时,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中打印它就可以了。

0 个答案:

没有答案