У меня есть модуль, в котором я строю форму. Я могу нажать форму через пункт меню, который также был создан в этом модуле. Когда я пытаюсь загрузить форму через ajax, я получаю всю страницу (верхний колонтитул, форму и нижний колонтитул), а не только форму. Вот пункт меню:
$items['sendmessage'] = array(
'title' => 'Send Message',
'description' => 'Send a message',
'page callback' => 'drupal_get_form',
'page arguments' => array('rmessages_message_form', 1),
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
);
Вот код JavaScript:
$('.send_message').click(function(){
$('.send-message-dialog').dialog('open');
$('.send-message-dialog .dialog-content').load('/sendmessage/7');
}
);
Если я загружаю URL через браузер, загружается форма. Есть ли способ заставить drupal просто визуализировать форму и вернуть HTML, а не пытаться загрузить всю страницу.
Кажется, это работает ... надо запомнить функцию drupal_render;)
$items['sendmessage'] = array(
'page callback' => 'rmessage_send_message_form',
'page arguments' => array('rmessages_message_form', 1),
'access callback' => TRUE
);
Использование drupal_build_form для получения массива элементов, который визуализируется drupal_render ()
function rmessage_send_message_form($form_id, $nid) {
$form_state = array();
echo drupal_render(drupal_build_form('rmessages_message_form', $form_state, $nid));
}