Jalankan tampilan tanpa rendering

8

Saya ingin menjalankan tampilan (memberikan argumen) secara terprogram dan mendapatkan hasil mentah, tanpa merendernya. Apa itu mungkin?

Ketika saya menggunakannya, $view->preview('default', $args);hasilnya dikonversi ke HTML. Saya tahu saya dapat menggunakan $view->resultuntuk mengulangi hasil mentah, tetapi kebiasaan yang diberikan yang saya gunakan untuk beberapa bidang adalah buggy dan memberi saya WSOD (Saya tidak memiliki minat atau kemampuan untuk memperbaiki penyaji, ini adalah kasus tepi :))

Saya menggunakan Tampilan 3 dengan Drupal 7

Daniel
sumber
Mungkin $ view-> execute () dapat membantu. Contoh sederhana: drupal.stackexchange.com/questions/9121/…
kalabro

Jawaban:

3

$ view-> preview () umumnya digunakan untuk hanya melihat tampilan sehingga dengan kata lain itu akan merendernya melalui format yang ditentukan.

$ view-> execute_display () juga mengembalikan tampilan dalam format yang relevan yang ditentukan dalam tampilan.

Saya pikir Anda mungkin harus menjalankan eksekusi query langsung yaitu db_query ()

Colin McClure
sumber
Saya kira saya hanya perlu resor untuk membangun permintaan sendiri dengan db_query. Terima kasih telah membantu :)
Daniel
0

Anda harus mendapatkan beberapa kesuksesan jika Anda mematikan view::preview()kode Anda sendiri, tetapi mengubahnya sehingga, alih-alih menelepon ->display_handler->preview(), itu ->execute()malah memanggil :

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

Ini harus bekerja karena, untuk sebagian besar penangan tampilan, panggilan ke ...->display_handler->preview()sebenarnya hanya pembungkus panggilan kembali ke view::render(). Yang itu sendiri dimulai dengan menelepon $this->execute(...).

JP
sumber