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->result
Rohergebnisse 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
Antworten:
Es gibt bereits eine Funktion, die genau das tut, was Sie wollen:
Lesen Sie mehr auf seiner Seite unter api.drupal.org:
https://api.drupal.org/api/views/views.module/function/views_get_view_result/7
quelle
$ 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 ()
quelle
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()
: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 istview::render()
. Was selbst mit einem Anruf beginnt$this->execute(...)
.quelle