Я работаю над модулем drupal 7, где я хочу распечатать информацию на странице (узел MENU_LOCAL_TASK/%node/что-то) с фильтрами ajax. Я создал форму и добавил 2 флажка, 1 по умолчанию, другой нет. Я хочу показать пользователю информацию, в соответствии с которой установлен флажок. 1 отображается в строке 1 таблицы, 2 отображается в строке 2 таблицы. Если что-то из этого отключено, то эта строка таблицы отключена. Я упоминал, что хочу решить эту проблему без отправки и перезагрузки, только с помощью ajax. Я добавил к двум флажкам следующие '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;
}
Прежде всего, это «хороший способ» сделать это, потому что я потерял уверенность :) Второй вопрос, как показать данные о загрузке страницы, прямо сейчас нужно изменить один флажок, чтобы увидеть некоторую информацию.
Спасибо и извините за краткое описание :)