Executar uma visualização sem renderização

8

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->resultpara 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

Daniel
fonte
Talvez $ view-> execute () possa ajudar. Exemplo simples: drupal.stackexchange.com/questions/9121/…
kalabro 18/08/11

Respostas:

3

$ 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 ()

Colin McClure
fonte
Acho que vou ter que recorrer à construção da consulta com db_query. Obrigado por ajudar :)
Daniel
0

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():

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

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 para view::render(). Que por si só começa chamando $this->execute(...).

JP
fonte