Me gustaría ejecutar una vista mediante programación (proporcionando argumentos) y obtener los resultados sin procesar, sin representarlos. ¿Es posible?
Cuando lo uso $view->preview('default', $args);
convierte los resultados a HTML. Sé que puedo usar $view->result
para iterar los resultados sin procesar, pero el renderizado personalizado que estoy usando para algunos campos tiene errores y me da un WSOD (no tengo interés o capacidad para arreglar el renderizador, es un caso extremo :))
Estoy usando Views 3 con Drupal 7
Respuestas:
Ya hay una función que hace exactamente lo que quieres:
Lea más en su página en api.drupal.org:
https://api.drupal.org/api/views/views.module/function/views_get_view_result/7
fuente
$ view-> preview () se usa generalmente para ver simplemente la pantalla, por lo que, en otras palabras, la representará a través del formato especificado.
$ view-> execute_display () también devuelve la pantalla en el formato relevante especificado en la vista.
Creo que es posible que deba ejecutar la consulta directa, es decir, db_query ()
fuente
Debería tener algo de éxito si termina
view::preview()
en su propio código, pero cámbielo para que, en lugar de llamar->display_handler->preview()
, llame en su->execute()
lugar:Esto debería funcionar porque, para la mayoría de los controladores de pantalla, la llamada a
...->display_handler->preview()
es en realidad solo un contenedor alrededor de una llamada de regresoview::render()
. Que en sí mismo comienza llamando$this->execute(...)
.fuente