Eseguire una vista senza rendering


8

Vorrei eseguire una vista a livello di codice (fornendo argomenti) e ottenere i risultati grezzi, senza renderlo. È possibile?

Quando lo uso $view->preview('default', $args);converte i risultati in HTML. So che posso usare $view->resultper iterare i risultati grezzi, ma il rendering personalizzato che sto usando per alcuni campi è difettoso e mi dà un WSOD (non ho interesse o capacità di riparare il renderer, è un caso limite :))

Sto usando Views 3 con Drupal 7


Forse $ view-> execute () può aiutare. Esempio semplice: drupal.stackexchange.com/questions/9121/…
kalabro

Risposte:



3

$ view-> preview () viene generalmente utilizzato per visualizzare semplicemente il display, in altre parole lo renderà tramite il formato specificato.

$ view-> execute_display () restituisce anche la visualizzazione nel formato pertinente specificato nella vista.

Penso che potrebbe essere necessario eseguire l'esecuzione diretta della query, ad esempio db_query ()


Immagino che dovrò solo ricorrere a costruire la query da solo con db_query. Grazie per l'aiuto :)
Daniel,

0

Dovresti ottenere un certo successo se stai inserendo il view::preview()tuo codice, ma modificalo in modo che, invece di chiamare ->display_handler->preview(), chiami ->execute()invece:

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

Questo dovrebbe funzionare perché, per la maggior parte dei gestori di display, la chiamata a ...->display_handler->preview()è in realtà solo un wrapper attorno a una chiamata a view::render(). Che a sua volta inizia chiamando $this->execute(...).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.