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 :

[Gestion des urls] Mauvais controller


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut [Gestion des urls] Mauvais controller
    Bonjour,

    J'ai un petit soucis: J'aimerais pouvoir redirigé l'utilisateur ou même afficher une erreur dans le cas ou une URL avec un mauvais controlleur serai entrée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (test)' in C:\wamp\www\Monsite\library\Zend\Controller\Dispatcher\Standard.php:249 Stack trace: #0 C:\wamp\www\Monsite\library\Zend\Controller\Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\wamp\www\Monsite\index.php(37): Zend_Controller_Front->dispatch() #2 {main} thrown in C:\wamp\www\Monsite\library\Zend\Controller\Dispatcher\Standard.php on line 249
    Merci!

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Tu sembles débuter avec le Zend Framework. j'aimerais te suggérer de lire la documentation et/ou des tutoriels afin de te familiariser avec ZF avant de commencer à poser des questions.

    http://zend-framework.developpez.com/
    http://framework.zend.com/manual/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut
    Merci,

    En ce qui concerne les tutoriaux, j'ai suivis ceux dont j'avais besoin.
    J'ai pourtant cherché sur le net des réponses a mes questions, d'où mon intervention dans ce forum.

    Tout est en place seulement je ne sais vers ou me tourner pour ce qui concerne la gestion de cette erreur: Si la page n'existe pas, comment rediriger vers une page plutôt que de le voir l'erreur s'afficher. J'ai pourtant essayer des "try" la ou je pensais être utile sans succès.

    Encore merci.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 15
    Par défaut
    Il y a ceci : http://julien-pauli.developpez.com/t...c-exceptions2/

    Ca fonctionne très bien chez moi, faut juste faire attention de ne pas laisser

    $frontController->throwExceptions(true);


    dans le bootstrap, sinon ça ne fonctionne pas.

  5. #5
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Il y a beaucoup plus simple : crée un controlleur ErrorController, avec une action errorAction. Ce controlleur est automatiquement géré par le framework.

    N'oublies pas de mettre ceci dans ton bootstrap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $frontController->throwExceptions(false);
    Mon fichier ErrorController :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
     
    	/**
    	 * Cette classe gère les erreurs de navigation (page inexistante, etc).
    	 * Une partie du code est tiré d'un exemple de Julien Pauli (http://julien-pauli.developpez.com).
    	 */
    	class ErrorController
    	{
    	    private $_exception;
    	    private static $errorMessage;
    	    private static $httpCode;
     
    	    public function preDispatch()
    	    {
    	    	$this->_exception = $this->_getParam('error_handler');
     
    	    	switch ($this->_exception->type) {
    	            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
    	            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
    	                self::$httpCode = 404;
    	                self::$errorMessage = 'Page introuvable';
    	            break;
    	            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER:
    	            	switch (get_class($this->_exception->exception)) {
    	            		case 'Zend_View_Exception' :
    	            			self::$httpCode = 500;
    	            			self::$errorMessage = 'Erreur de traitement d\'une vue';
    	            		break;
    	            		case 'Zend_Db_Exception' :
    	            			self::$httpCode = 503;
    	            			self::$errorMessage = 'Erreur de traitement dans la base de données';
    	            		break;
    	            		case 'Metier_Exception' :
    	            			self::$httpCode = 200;
    	            			self::$errorMessage = $this->_exception->exception->getMessage();
    	            		break;
    	            		default:
    	            			self::$httpCode = 500;
    	            			self::$errorMessage = 'Erreur inconnue : '. $this->_exception->exception->getMessage();
    	            		break;
    	            	}
    	            break;
    	    	}
     
    	    }
     
    	    public function errorAction()
    	    {
    	    	$this->view->message = self::$errorMessage;
    	    	$this->view->httpCode = self::$httpCode;
     
    	    	// Affiche la vue.
    	    	echo $this->view->render("erreur/erreur.tpl");
    	    }
     
    	}
    Bon courage.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2008
    Messages : 160
    Par défaut
    Super,

    Je vais tester ça dans la journée.

    Encore merci à vous.

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Une autre approche est de considérer que cette gestion des erreurs est de l'optimisation. Tu pourras toujours te pencher plus tard sur cette question, par exemple lorsque tu auras appris l'existence de l'ErrorController

    Tel que je te l'ai dit, la documentation officielle propose une solution à ton problème :
    http://framework.zend.com/manual/en/...d.errorhandler
    Zend_Controller_Plugin_ErrorHandler est un plugin intégré d'office dans le modèle MVC, il sert à gérer les exceptions envoyées par l'application, en particulier celles concernant des contrôleurs ou des actions manquants.

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

Discussions similaires

  1. Gestion des URL par défaut des WebServices
    Par helios77 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/05/2013, 13h39
  2. Gestion des urls de son site
    Par themostmd dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 18/07/2011, 13h10
  3. [Smarty] Gestion des url: Lien non trouvé
    Par psgman113 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/04/2011, 17h28
  4. Gestion des URL en HMVC
    Par FMaz dans le forum Design Patterns
    Réponses: 0
    Dernier message: 01/09/2010, 05h38
  5. gestion des sessions et controle
    Par navorinco dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2009, 19h32

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