私はdrupal7モジュールに取り組んでおり、ajaxフィルターを使用してページ(MENU_LOCAL_TASKノード/%ノード/何か)に情報を出力したいと考えています。フォームを作成し、2つのチェックボックスを追加しました。1つはデフォルトで、もう1つはそうではありません。チェックボックスがオンになっている場合の情報をユーザーに表示したい。1はテーブル行1に表示され、2はテーブル行2に表示されます。一部がオフの場合、そのテーブル行がオフになります。送信してリロードせずに、ajaxだけで解決したいと言いました。次の2つのチェックボックスに追加しました'ajax' => array('callback' => 'my_module_callback')
。これがコードの残りの部分で、単純化されています。
function my_module_callback($form, $form_state) {
$data = array();
$nid = 1;
if ($form_state['values']['checkbox1']) {
$data += load_data($nid, "checkbox1");
}
if ($form_state['values']['checkbox1']) {
$data += load_data($nid, "checkbox2");
}
$commands[] = ajax_command_html("#here", my_module_table($data));
return array('#type' => 'ajax', '#commands' => $commands);
}
function my_module_table($data){
//do some stuff with the data in a foreach
return theme("my_module_fancy_table",array("data" => $data));
}
function theme_my_module_fancy_table($data){ //registered with my_module_theme()
// putting html into $output in a foreach
return $output;
}
function my_module_page_callback_from_menu_function($nid){
$output = drupal_render(drupal_get_form('my_module_custom_ajax_form'));
$output .= "adding other stuffs including div#here";
return $output;
}
まず第一に、これはこれを行うための「良い方法」であり、私は一種の自信を失いました:) 2番目の質問、ページの読み込み時にデータを表示する方法、厳密に1つのチェックボックスを変更していくつかの情報を表示する必要があります。
簡単な説明をありがとうと申し訳ありません:)