2010-11-26 10 views
15

Ich habe folgende Controller, der diese es hat unter anderem Methoden ein:Zend - wie man das Layout für eine bestimmte Aktion deaktiviert?

class EquipasController extends OccControllerAction { 

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

Ich hatte erwartet, dass, wenn ich das tue: http://www.example.com/equipas/lista/

die Steuerung ausgeführt wird, und ich werde keine Layout-Rendering sehen auf meinem Ansichtsfenster.

Das ist jedoch nicht der Fall. Ich bekomme meine Homepage gerendert.

Wo auf ZF sagen wir normalerweise: wenn eine Aktion nicht existiert, sollte eine Homepage erscheinen?

Hinweis: Wenn statt: http://www.example.com/equipas/lista/

ich tun, http://www.example.com/equipas/adasdas21232131/ , die nicht existiert.

Ich bekomme das gleiche Homepage-Rendering.

Was könnte die Ursache für ein solches Verhalten sein?

A Zend Neuling, MEM

+0

etwas falsch mit meiner Frage? Soll ich mehr Details liefern? Sage ich etwas dummes? Lass es mich wissen, bitte. Hier feststecken. – MEM

+0

Können Sie Ihr Problem angeben? Möchten Sie das Layout deaktivieren oder möchten Sie zur Startseite umleiten, wenn eine Aktion nicht existiert? – Nedec

+0

Danke. Nein. Ich möchte weder das Layout deaktivieren noch zur Startseite umleiten, wenn die Aktion nicht existiert. Was ich will ist, wenn wir tun: http://www.mysite.com/equipas/lista/ (SO, wenn wir die Aktion lista aufrufen) das Layout wird nicht verwendet. Warum? Zum Beispiel für Ajax-Anrufe. Vielen Dank. – MEM

Antwort

5

Dies kann Ihre Frage nicht direkt beantworten (was Sie scheinen irgendwie gelöst zu haben), aber das Layout deaktivieren und eine andere Ansicht für AJAX-Anforderungen liefern, sollten Sie die AjaxContext mit Aktionshelfer.

+0

Wird mir das helfen, einige Deep-Link-Probleme zu lösen? – MEM

20

Fügen Sie diese in Ihrem Controller:

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

in ZF2

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