Je voudrais exécuter par programme une vue (en fournissant des arguments) et obtenir les résultats bruts, sans les rendre. C'est possible?
Quand je l'utilise, $view->preview('default', $args);
il convertit les résultats en HTML. Je sais que je peux utiliser $view->result
pour itérer les résultats bruts, mais le rendu personnalisé que j'utilise pour certains champs est bogué et me donne un WSOD (je n'ai aucun intérêt ou capacité à corriger le rendu, c'est un cas de bord :))
J'utilise Views 3 avec Drupal 7
Réponses:
Il existe déjà une fonction qui fait exactement ce que vous voulez:
En savoir plus sur sa page sur api.drupal.org:
https://api.drupal.org/api/views/views.module/function/views_get_view_result/7
la source
$ view-> preview () est généralement utilisé pour afficher simplement l'affichage, c'est-à-dire qu'il le restituera via le format spécifié.
$ view-> execute_display () renvoie également l'affichage dans le format approprié spécifié dans la vue.
Je pense que vous devrez peut-être exécuter directement la requête, c'est-à-dire db_query ()
la source
Vous devriez obtenir un certain succès si vous vous retrouvez
view::preview()
dans votre propre code, mais changez-le de sorte qu'au lieu d'appeler->display_handler->preview()
, il appelle à la->execute()
place:Cela devrait fonctionner car, pour la plupart des gestionnaires d'affichage, l'appel à
...->display_handler->preview()
est en fait juste un wrapper autour d'un rappelview::render()
. Ce qui lui-même commence par appeler$this->execute(...)
.la source