2010-12-22 5 views
0

Wenn Sie Ansichten ohne Ajax verwenden, können Sie einfach mit hook_views_pre_render() auf das Array $ view-> result zugreifen. Aber wie kann ich auf das Objekt $ view zugreifen, wenn ich Ajax zum Filtern meiner Ansicht verwende?

Ich möchte verwenden, um verschiedene Javascripts und Formulare zu führen, daher wäre die beste Lösung, $ view-> Ergebnis in das Drupal.settings-Objekt zu setzen.

Ist das möglich? Ich habe hook_ajax_data_alter() gefunden, aber ich weiß nicht, wie ich es benutzen soll oder ob es der richtige Weg ist.

Danke!

Antwort

0

Ok, also habe ich eine etwas gut aussehende Lösung gefunden.

/** 
* 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; 
    } 
} 

Ich habe einfach hinzugefügt, um die $ view-> führen zu dem $ Objekt, und fügte hinzu, meinen benutzerdefinierten Rückruf, die das Drupal.settings Objekt $ view-> führt hinzuzufügt.

Ich habe versucht, einen Rückruf direkt auf das $ View-Objekt hinzuzufügen, aber es ist nicht gelungen, so wird dies für jetzt tun.

Bitte lassen Sie mich wissen, ob es einen besseren Weg, dies zu tun =)

+0

Ich glaube, Sie suchen hook_views_ajax_data_alter: http://api.drupal.org/api/views/views.api.php/ function/hook_views_ajax_data_alter/7 – aaronbauman

Verwandte Themen