Доступ к объекту $ view при использовании AJAX в представлении - PullRequest
0 голосов
/ 22 декабря 2010

При использовании представлений без Ajax легко получить доступ к массиву $ view-> result с помощью hook_views_pre_render (). Но как я могу получить доступ к объекту $ view, если я использую Ajax для фильтрации своего вида?

Я хочу использовать для получения различных Javascript и форм, поэтому лучшим решением было бы поместить $ view-> result в объект Drupal.settings.

Возможно ли это? Я нашел hook_ajax_data_alter (), но я не знаю, как его использовать, или если это правильный путь.

Спасибо!

1 Ответ

0 голосов
/ 22 декабря 2010

Хорошо, я нашел несколько привлекательное решение.

/**
 * Implementation of hook_ajax_data_alter().
 */
function request_ajax_data_alter(&$object, &$type, &$view) {
  $array = FALSE;
  // Detect whether the data being altered is an array.
  if (is_array($object)) {
    $object = (object) $object;
    $array = TRUE;
  }
  $object->scripts = $extra['scripts'];
  $object->css = $extra['css'];
  if (!isset($object->__callbacks)) {
    $object->__callbacks = array();
  }

  // Add the view result to the object.
  $object->view_result = $view->result;

  // Set the custom event as a callback.
  $object->__callbacks[] = 'Drupal.request.saveResult';

  // Cast back to an array if necessary.
  if ($array) {
    $object = (array) $object;
  }
}

Я просто добавил $ view-> result к объекту $ и добавил свой собственный обратный вызов, который добавляет $ view-> result к объекту Drupal.settings.

Я пытался добавить обратный вызов непосредственно к объекту $ view, но безуспешно, поэтому пока это будет сделано.

Пожалуйста, дайте мне знать, если есть лучший способ сделать это =)

...