IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Désactiver le chargement de la vue par défaut après un $this->render() [ZF 1.11]


Sujet :

Zend Framework PHP

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut Désactiver le chargement de la vue par défaut après un $this->render()
    Bonjour,

    J'utilise la version 1.12 du ZF. J'ai un souci sur le chargement des vues. Voici un résumé de mon code :

    controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    FooController  extends Zend_Controller_Action {
     
      public function init()
      {
        // traitement données avec la DB ... ... ...
        // puis :
        $this->render('generic');
      }
    }
    Quelles que soient l'action de la request, je passe dans l'init pour charger mes données, et rediriger vers la vue correspondante.

    Exemples :
    monsite.com/foo/bar
    monsite.com/foo/baz

    Je charge les données correspondant à bar ou baz, puis les renvoie vers une même vue (generic.phtml).

    Problème :
    une fois la vue affichées, le code continue à s'exécuter, et j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'Zend_Controller_Action_Exception' with message 'Action "bar" does not exist and was not trapped in __call()'
    J'ai créé l'action barAction() pour debug, et effectivement elle est appelée à la suite du $this->render() initial. Mais je ne veux pas qu'elle soit appelée.

    J'ai tenté un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_helper->layout->disableLayout();
    Mais j'ai besoin de charger le layout.

    Idem avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->_helper->viewRenderer->setNoRender(true);
    Je souhaiterais plutôt désactiver le chargement de la vue par défaut (correspondant à l'action) plutôt que désactiver les vues...

    J'espère que je suis assez clair... Merci pour votre aide.

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Bonsoir,

    Je te conseille de prendre connaissance de ce graph et de la doc, c'est bien utile pour cerner le fonctionnement du MVC Zend Framework : http://framework.zend.com/manual/1.1...er.basics.html

    Plus précisément pour répondre à ton problème, effectuer le rendu d'une vue n'empêche pas le contrôleur de rendre l'action prévue à l'origine, la vue rendue sera ajoutée à la réponse (ce qui permet de faire rendre la vue en plusieurs morceau). Pour éviter ça, il faut :

    • Dans tous les cas une action vers laquelle forwarder la requête.
    • Effectuer le forward au plus tard dans le preDispatch. Je pense que dans le init ça fera l'affaire. Si tu fais le forward plus tard (dans l'action, ou dans le postDispatch) alors les actions sont appelées à la suite et leur template "concaténés".


    En gros, tu peux créer une genericAction(), et faire $this->_forward('generic'); dans ton init() ça devrait se comporter comme attendu.

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Super, c'est exactement ce qu'il me fallait, j'ai appris quelque chose !

    Merci pour ton aide.

  4. #4
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    You're welcome

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Désactiver les pages d'erreur HTML par défaut
    Par Delprog dans le forum Zend
    Réponses: 1
    Dernier message: 13/07/2010, 09h55
  2. [WSS 3] Vue par défaut d'une bibliothèque d'images
    Par piko68 dans le forum Configuration
    Réponses: 14
    Dernier message: 21/09/2009, 14h53
  3. [WSS 3] Vue par défaut d'une bibliothèque d'images
    Par piko68 dans le forum SharePoint
    Réponses: 14
    Dernier message: 21/09/2009, 14h53
  4. Chargement de la valeur par défaut d'un liste déroulante
    Par alsimbad dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/12/2007, 08h38
  5. Vues par défaut
    Par ben53 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 23/07/2007, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo