Führen Sie eine Ansicht ohne Rendern aus

8

Ich möchte eine Ansicht programmgesteuert ausführen (Argumente bereitstellen) und die Rohergebnisse erhalten, ohne sie zu rendern. Ist es möglich?

Wenn ich es benutze $view->preview('default', $args);, konvertiert es die Ergebnisse in HTML. Ich weiß, dass ich die $view->resultRohergebnisse iterieren kann , aber die benutzerdefinierte Darstellung, die ich für einige Felder verwende, ist fehlerhaft und gibt mir ein WSOD (ich habe kein Interesse oder keine Fähigkeit, den Renderer zu reparieren, es ist ein Randfall :))

Ich verwende Views 3 mit Drupal 7

Daniel
quelle
Vielleicht kann $ view-> execute () helfen. Einfaches Beispiel: drupal.stackexchange.com/questions/9121/…
Kalabro

Antworten:

3

$ view-> Vorschau () wird im Allgemeinen verwendet, um die Anzeige einfach anzuzeigen, mit anderen Worten, sie wird im angegebenen Format gerendert.

$ view-> execute_display () gibt auch die Anzeige in dem in der Ansicht angegebenen relevanten Format zurück.

Ich denke, Sie müssen möglicherweise dazu führen, dass die Abfrage direkt ausgeführt wird, dh db_query ()

Colin McClure
quelle
Ich denke, ich muss nur die Abfrage selbst mit db_query erstellen. Vielen Dank für Ihre Hilfe :)
Daniel
0

Sie sollten etwas Erfolg haben, wenn Sie view::preview()in Ihren eigenen Code stubben, ihn aber so ändern, dass er statt ->display_handler->preview()aufruft ->execute():

$view = views_get_view($view_name);
$view->set_display($display_name);
$view->preview = TRUE;
$view->pre_execute($args);
$view->execute($display_name);

Dies sollte funktionieren, da für die meisten Display-Handler der Aufruf von ...->display_handler->preview()eigentlich nur ein Wrapper um einen Rückruf an ist view::render(). Was selbst mit einem Anruf beginnt $this->execute(...).

JP
quelle