web-dev-qa-db-fra.com

Zend - comment désactiver la mise en page sur une action donnée?

J'ai le contrôleur suivant qui a, entre autres méthodes, celui-ci:

class EquipasController extends OccControllerAction {

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

Je m'attendais à cela, quand je fais: http://www.example.com/equipas/lista/

le contrôleur s'exécutera et je ne verrai aucun rendu de mise en page dans ma fenêtre.

Cependant, ce n'est pas le cas. Je reçois ma page d'accueil rendue.

Où sur ZF dit-on normalement: si une action n'existe pas, une page d'accueil doit apparaître?

Remarque: Si, au lieu de: http://www.example.com/equipas/lista/

Je fais, http://www.example.com/equipas/adasdas21232131/ qui n'existe pas.

Je reçois le même rendu de la page d'accueil.

Quelle pourrait être la cause d'un tel comportement?

Un débutant Zend, MEM

15
MEM

Cela ne répond peut-être pas directement à votre question (ce que vous semblez avoir résolu de toute façon), mais pour désactiver la présentation et fournir une vue différente pour les demandes AJAX, envisagez d'utiliser l'aide/ AjaxContext action.

5
Phil

Ajoutez ceci dans votre contrôleur:

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

dans zf2 

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