レンダリングせずにビューを実行する


8

プログラムでビュー(引数を指定)を実行し、レンダリングせずに生の結果を取得したいと思います。出来ますか?

使用する$view->preview('default', $args);と、結果がHTMLに変換されます。私$view->resultは生の結果を反復するために使用できることを知っていますが、一部のフィールドに使用しているカスタムレンダリングはバグがあり、WSODを提供します(レンダラーを修正する興味も機能もありません、それはエッジケースです:))

Drupal 7でビュー3を使用しています


たぶん$ view-> execute()が役に立ちます。簡単な例:drupal.stackexchange.com/questions/9121/...
kalabro

回答:



3

$ view-> preview()は通常、単に表示を表示するために使用されるため、指定された形式で表示されます。

$ view-> execute_display()は、viewで指定された関連する形式でディスプレイも返します。

私はクエリを直接実行する必要があるかもしれないと思います、すなわちdb_query()


自分でdb_queryを使用してクエリを作成する必要があるだけだと思います。助けてくれてありがとう:)
ダニエル

0

あなたはスタブアウト場合は、いくつかの成功を得る必要がありview::preview()、独自のコードに、代わりに呼び出すのでは、というようにそれを変更し->display_handler->preview()、それが呼び出す->execute()代わりに:

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

ほとんどのディスプレイハンドラでは、への呼び出し...->display_handler->preview()は実際にはへの呼び出しのラッパーにすぎないため、これは機能するはずview::render()です。それ自体はを呼び出すことから始まり$this->execute(...)ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.