Получение любых данных через ajax в Drupal'e

Для того, чтобы получить любые данные через ajax, в друпале необходимо сделать следующее:
зарегистрировать через хук _menu адрес и вывести в него нужные данные:

function nikita_petrov_menu() {
  $items['nikita_petrov/get_node_form'] = array(
    'access arguments' => array('access content'),
    'page callback' => 'nikita_petrov_get_node_form',
    'page arguments' => array(2),
    'type' => MENU_CALLBACK,
  );  
  return $items;
}
 
function nikita_petrov_get_node_form($node_type)
{
  if ($node_type != '') {
    $node = _nikita_petrov_retrieve_node_for_creation_form($node_type);
    //$whatever = $_POST['some_value'];
    $html = drupal_get_form($node_type . '_node_form', $node); //Здесь можете передавать всё что хотите
    drupal_json(array(
      'html' =>  $html
    )
    );
  }  
  return;
}

При этом данные будут выводиться в формате json, сразу на пустую страницу. Так же надо добавить javascript, который эти данные будет получать:

Drupal.behaviors.ajax_node_form = function (context) {
  $('.ajax_add_node_form:not(.ajax-processed)').addClass('ajax-processed').each(function() {
    $(this).click(function () {
      var submitApplication = function(data) {
        $('.ajax_node_destination:not(.filled)').addClass('filled').html(data.html);
      }
      $.ajax({
        type: 'POST',
        url: Drupal.settings.basePath + 'nikita_petrov/get_node_form/product',
        dataType: 'json',
        success: submitApplication,
        data: 'some_value=1'
      });
      return false;
    });
  });
};

В этом коде данные получаются через ajax и выводятся в div. В функции submitApplication вы можете делать с данными всё что захотите (не обязательно получать html, можно получать какие-то переменные и потом работать с ними).

Удачи!

Drupal 7

Комментарии

Добавить комментарий