Eu gostaria de executar programaticamente uma exibição (fornecendo argumentos) e obter os resultados brutos, sem renderizá-la. É possível?
Quando eu uso $view->preview('default', $args);
, converte os resultados em HTML. Eu sei que posso usar $view->result
para iterar os resultados brutos, mas o personalizado processado que estou usando para alguns campos é incorreto e me fornece um WSOD (não tenho interesse ou capacidade de consertar o renderizador, é um caso extremo :))
Estou usando o Views 3 com o Drupal 7
Respostas:
Já existe uma função que faz exatamente o que você deseja:
Leia mais em sua página em api.drupal.org:
https://api.drupal.org/api/views/views.module/function/views_get_view_result/7
fonte
$ view-> preview () é geralmente usado para simplesmente exibir a tela, ou seja, ela será renderizada no formato especificado.
$ view-> execute_display () também retorna a exibição no formato relevante especificado na view.
Eu acho que você pode ter que resultar para executar a consulta direta, ou seja, db_query ()
fonte
Você deve obter algum sucesso se escrever
view::preview()
em seu próprio código, mas altere-o para que, em vez de chamar->display_handler->preview()
, ele chame->execute()
:Isso deve funcionar porque, para a maioria dos manipuladores de exibição, a chamada para
...->display_handler->preview()
é na verdade apenas um invólucro em torno de uma chamada de volta paraview::render()
. Que por si só começa chamando$this->execute(...)
.fonte