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;
}

ブロックメソッドを使用したときに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 で印刷すると、問題なく動作します。

4

0 に答える 0