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」があります。
Drupal7を使用しています。
これを解決する方法について何か考えはありますか? ありがとうございました。
編集: 問題は、ブロックを html.tpl.php に直接印刷していたことにあるようです。page.tpl.php で印刷すると、問題なく動作します。