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

MVC PHP Discussion :

Modification de l'objet request via plugin


Sujet :

MVC PHP

  1. #1
    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 Modification de l'objet request via plugin
    Bonjour !

    Je viens vous ennuyer avec un petit soucis qui me préoccupe. Pas que je ne pourrais pas le contourner, mais j'aimerais surtout bien comprendre le pourquoi du comment...

    J'utilise un plugin d'initialisation avec mon front controller, dans lequel je me connecte, entre autre à ma BDD. L'idée était d'intercepter les exceptions et de modifier l'objet request pour afficher une action "maison" du contrôleur d'erreur.

    Un extrait de la méthode routeStartup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
        public function routeStartup(Zend_Controller_Request_Abstract $request)
        {
        	try
        	{
           		$this->initDb();
        	}
        	catch (Zend_Exception $e)
        	{
        		// Affichage de la page d'erreur appropriée
        		$request->setActionName('error-db')
        			->setControllerName('error')
        			->setModuleName('default')
        			->setParam('message', $e->getMessage());
        	}
            [...]
        }
    J'ai peut être pas tout saisi au fonctionnement précis de Zend_Controller, mais apparemment après exécution du code, quelques dump plus tard, l'objet request est redéfini par rapport à l'uri, et du coup mon intervention est écrasée.

    J'ai déjà creusé du coté de $request->setDispatched(), sans succès.

    Si vous pouviez m'aiguiller sur le moment précis du dispatcher durant lequel est initialisé l'objet request, et les "bonnes pratiques" courantes pour ce cas de figure. Même si personnellement ça me parait assez logique que le "court-circuit" se fasse dés l'initialisation en cas d'échec de connexion à la bdd, plutôt qu'à l'initialisation du contrôleur.

    Merci d'avance !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    Bonjour Nighty,

    Le soucis vient du fait que tu mets ton code sur l'évènement 'routeStartup'.
    A ce moment, le router n'a pas encore évaluer la requête pour remplir l'objet request. L'object request est initialisé à partir du 'routeShutdown'.
    Ce diagramme t'aidera sans doute à mieux comprendre :



    En gros, ça devrait marcher, si tu utilises dans ton plugin la signature suivante pour y mettre ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function routeShutdown(Zend_Controller_Request_Abstract $request) {
    ...
    }
    J'espère que c'est clair, n'hésites pas si tu as encore une question.

    A+,
    Olivier

  3. #3
    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
    C'est on ne peut plus clair, merci beaucoup ! En fait le plugin a été créé automatiquement par Zend Studio, et je manque d'expérience dans l'utilisation des plugins malgré le fait que j'ai utilisé le framework sur quelques projets... Comme je n'avais pas le nom des différents évènements... J'ai pataugé.

    J'ai testé et ça fonctionne, merci encore !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 93
    Points
    93
    Par défaut
    Avec plaisir

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

Discussions similaires

  1. Modification de l'objet requete via un trigger RequeteAfterUpdate
    Par max33370 dans le forum Salesforce.com
    Réponses: 10
    Dernier message: 22/04/2014, 15h00
  2. Caster un objet récupéré via request.getParameter
    Par Bobette dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 07/05/2012, 14h07
  3. Réponses: 7
    Dernier message: 21/06/2006, 15h43
  4. Réponses: 4
    Dernier message: 14/09/2005, 21h39
  5. [servlet][bean]comment récupérer l'objet request
    Par otminou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/09/2004, 14h40

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