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