2010-11-26 19 views
15

私は他の方法の中で、それはこの1つを持って、次のコントローラがあります。Zend - 特定のアクションでレイアウトを無効にする方法は?

class EquipasController extends OccControllerAction { 

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

私は私が行うとき、ことを期待していた: http://www.example.com/equipas/lista/

コントローラが実行され、私は、レイアウトのレンダリングを見ないだろうし私のビューポートに。

しかし、そうではありません。私は自分のホームページをレンダリングします。

ここでは、ZFでは、通常、アクションが存在しない場合、ホームページが表示されますか?

注: 代わりに、もし: http://www.example.com/equipas/lista/

私は、存在しない http://www.example.com/equipas/adasdas21232131/

私は同じホームページレンダリングを取得します。

このような動作の原因は何ですか?

A Zendの初心者、 MEM

+0

何か?私は詳細を提供する必要がありますか?私は何かダミーを言っていますか?私にお知らせください。ここにはまった。 – MEM

+0

問題を指定できますか?レイアウトを無効にするか、アクションが存在しないときにホームページにリダイレクトしますか? – Nedec

+0

ありがとうございます。いいえ。レイアウトが無効で、アクションが存在しない場合はホームページにリダイレクトしたくありません。私が望むのは、私たちがやっていることです:http://www.mysite.com/equipas/lista/(つまり、アクションリストを呼ぶときに)レイアウトは使用されません。どうして?たとえばajaxの場合は、ありがとう。 – MEM

答えて

5

これはAjaxContextを使用することを検討し、(あなたがとにかく解決しているように見えるもの)を直接あなたの質問に答えることはできませんが、レイアウトを無効にし、AJAX要求のための別のビューを提供するためにアクションヘルパー。

+0

ディープリンクの問題を解決するのに役立ちますか? – MEM

20

あなたのコントローラ内にこれを追加します。

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

ZF2に、私の質問を間違っ

public function indexAction() 
    {  
     echo "json" 
     return $this->getResponse(); 
    }