2009-10-11 5 views
10

私はzend frameworkのMVCで遊んでいます。 Zend Frameworkは、コントローラが呼び出されるたびにビュースクリプトを組み込もうとしています。ブートストラップで次のコードを使用して無効にすることができます。コントローラでビュースクリプトを無効にする方法 - Zend Framework

$ frontController-> setParam( 'noViewRenderer'、true);

しかし、コントローラメソッドでZend_Viewクラスを初期化してから、スクリプトファイルを自分でレンダリングする必要があります。

コントローラメソッドにビュースクリプトを含めないようにするにはどうしたらよいですか?

答えて

30

あなたのコントローラにこのコードで、ビューレンダラコントローラヘルパーを無効にすることができます

public function myAction() 
{ 
    $this->_helper->viewRenderer->setNoRender(true); 
    // from now on, ZF won't search for a matching view script file. 
} 
+0

thnsおい...それは助け....そしてあなたのansは10 upvotesに達した:) – chhameed

1

簡単に、あなたの行動からそれを無効にしてください。

$this->_helper->layout->disableLayout(); 

レイアウトについて話していない場合は、exit()をアクションに追加してください。アプリケーションにどのような影響があるのか​​を理解するだけです。

+0

私が求めていたものではありませんが、それも役立ちます! – Moon

4

最良の例は、上記の両方のコマンドを使用することです:

public function myAction() { 
    $this->_helper->layout->disableLayout(); 
    $this->_helper->viewRenderer->setNoRender(true); 
} 

まず一つは、レイアウトを無効にし、一般に有効です。

application.ini

デフォルト

resources.layout.layoutPath = APPLICATION_PATH "/レイアウト/スクリプト"

$this->_helper->layout->disableLayout();

と第二無効は、スクリプト(.phtml)を表示するので、場合に例外がスローされていませんビュースクリプトファイルが見つかりません

$this->_helper->viewRenderer->setNoRender(true); 

また、ビューのヘルパーがあります。たとえば、配列データからJSONを返し、ビュー要素をレンダリングしたくないなど、耳を傾けている必要はありません。

public function myAction() { 
    $this->_helper->json(array()); 
} 

レイアウトや表示スクリプトは表示されません。

関連する問題