我有一个模块,用于构建使用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中打印它就可以了。