Drupal ahah формы загруженые ajax
Автор: Sysaninмая 12
Допустим по нажатию кнопки или ссылки нам надо подгрузить аяксово форму в какой-то div. Средствами drupala и с библиотекой jQuery это очень просто делается. Но нам же не надо, что бы страница с формой перегружалась, правда? Следовательно на неё надо повесить ahah. Вот тут то и появиться проблема.
Для загрузки формы аяксом мы не будем грузить страницу целиком (нам же только форма нужна) и прервем загрузку сразу после вывода формы. Типа этого:
Но в таком случае у нас на форму, после её загрузки ajax, не навесится обработчик ahah. Исправить это можно следующим образом:
$message = theme('status_messages'); //получим все сообщения (мы же хотим узнать что форма заполнена ошибочно или обновилась успешно?)
$js = drupal_add_js(NULL, NULL, 'header'); //получаем все js
unset($js['core']); //удаляем движки, т.к. нам не к чему повторно подключать jQuery и drupal
unset($js['theme']); //JS темы то же не нужны, они уже загружены
$out = drupal_get_js('header', $js).$message.$out;
drupal_json(array('data' => $out, 'status' => 1)); //создаем json ответ, что бы AHAH Обработчик формы нормально обработал полученные данные
exit;
Естественно при первой загрузке AJAX'ом надо учесть, что данные будут приходить в json и нужно активировать AHAH, то есть например так:
//чего-то делаем
Drupal.behaviors.ahah(); // инициализируем принудительно AHAH
}, 'json');
Нет комментариев