2010-11-26 33 views
15

je le contrôleur suivant, entre autres méthodes, il a celui-ci:Zend - comment désactiver la mise en page sur une action donnée?

class EquipasController extends OccControllerAction { 

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

j'attendais que, quand je fais: http://www.example.com/equipas/lista/

le contrôleur exécutera et je ne verra pas le rendu de mise en page sur ma vue.

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

Où sur ZF, disons-nous normalement: si une action n'existe pas, une page d'accueil devrait apparaître?

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

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

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

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

A Zend Débutant, MEM

+0

Quelque chose ne va pas avec ma question? Devrais-je fournir plus de détails? Est-ce que je dis quelque chose de factice? S'il vous plaît, faites-moi savoir. Bloqué ici. – MEM

+0

Pourriez-vous préciser votre problème? Voulez-vous désactiver la mise en page ou souhaitez-vous rediriger vers la page d'accueil lorsqu'une action n'existe pas? – Nedec

+0

Merci. Je ne veux pas désactiver la mise en page ni rediriger vers la page d'accueil lorsque l'action n'existe pas. Ce que je veux, c'est quand nous faisons: http://www.monsite.com/equipas/lista/ (SO, quand nous appelons l'action lista) la mise en page n'est pas utilisée. Pourquoi? Pour les appels ajax par exemple. Merci. – MEM

Répondre

5

Cela peut ne pas répondre directement à votre question (que vous semblez avoir résolu de toute façon), mais pour désactiver la mise en page et de fournir une vue différente pour les requêtes AJAX, envisagez d'utiliser le AjaxContext aide à l'action.

+0

Est-ce que cela m'aidera à résoudre certains problèmes de liens profonds? – MEM

20

Ajouter ceci à l'intérieur de votre contrôleur:

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

dans ZF2

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