проблема с настройкой page.tpl.php для 7-дневного обратного вызова Drupal для обслуживания формы через AJAX - PullRequest
1 голос
/ 15 октября 2011

Я создаю пользовательский модуль.Я хочу реализовать форму, которую можно использовать как блок и использовать в диалоговом окне запроса (загружается с помощью запроса ajax).Я создал блок без проблем.Я также создал функцию обратного вызова страницы без проблем.

Итак, я могу загрузить форму в блок и открыть диалог jquery, и он получит форму с помощью запроса ajax.Но он загружает форму и шаблон полной страницы с заголовком и нижним колонтитулом и т.д ....

Я хочу использовать другой шаблон страницы при получении вызова ajax, так что все, что я получаю, этоформа.Но все, что я видел в Интернете, похоже, представляет собой смесь между drupal 6 и 7, и у меня ничего не получилось.

вот моя последняя попытка:

в меню хук

  $items['mymodule/get_form_ajax'] = array( 
    'title' => 'Ajax Form',
    'type' => MENU_CALLBACK,
    'page callback' => 'get_form_ajax',
    'access arguments' => array('access content'),
  );

Тогда у меня есть обратный вызов:

function get_form_ajax() {
    $form = drupal_get_form('request_form');
    $build['items'] = array(
        '#theme' => 'request_form',
        '#items' => $form,
    );
    return $build;
}

И тогда я зарегистрировал тему следующим образом:

function mymodule_theme($existing, $type, $theme, $path){
  return array(
    'request_form' => array(
      'template' => 'request_form', 
      'render element' => 'form', 
    )
  );
}

В любом случае, это полностью не работает.Он просто отображает пустую страницу в диалоге.Любая помощь будет оценена.

1 Ответ

1 голос
/ 15 октября 2011

Поскольку вы делаете вызов AJAX, вам не нужно позволять странице строить как обычно, вы можете просто распечатать визуализированную форму напрямую и позвонить drupal_exit():

function get_form_ajax() {
  $form = drupal_get_form('request_form');
  echo render($form);

  drupal_exit();
}

Это даст вамхорошая чистая форма, которая наследует стили от страницы, на которую она загружается, и сохраняет маркеры / кэш формы в неизменном состоянии.

...