在视图上使用AJAX时访问$ view对象

使用没有Ajax的视图时,可以使用hook_views_pre_render()轻松访问$ view-> result数组。但是,如果我使用Ajax过滤我的视图,如何访问$ view对象? 我想用来产生不同的Javascripts和表单,因此最好的解决方案是将$ view-> result放在Drupal.settings对象中。 这可能吗?我找到了hook_ajax_data_alter(),但我不知道如何使用它,或者它是否是正确的方法。 谢谢!     
已邀请:
好的,所以我找到了一个看起来很好看的解决方案。
/**
 * 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->结果添加到$对象,并添加了我的自定义回调,它将$ view-> result添加到Drupal.settings对象。 我试图直接向$ view对象添加一个回调,但是没有成功,所以现在这样做。 如果有更好的方法,请告诉我=)     

要回复问题请先登录注册