Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-06-2010 23:03:57

rclsilver
Nouveau membre
Date d'inscription: 17-06-2010
Messages: 6

[Zend Router][ZF 1.10.5] Routage personnalisé dans appli modulaire

Bonjour,

Dans une application web modulaire basée sur Zend Framework, je souhaite effectuer un URL rewriting personnalisé afin de passer dans l'url un paramètre.

L'application possède plusieurs modules : default, forum, wiki, ticket, user...

Pour tous les modules, je souhaiterais passer dans l'url une variable "project" pour avoir des urls du type : http://monsite.com/:project/:module/:controller/:index.

Les urls suivantes seront donc possibles (avec comme valeur pour la variable project : projet1) :
* http://monsite.com/projet1/wiki/ : params : module : wiki, controller : index, action : index, project : projet1
* http://monsite.com/projet1/forum/ : params : module : forum, controller : index, action : index, project : projet1
* http://monsite.com/ : params : module : default, controller : index, action : index, project : default

Pour effectuer ce rewriting, voici ce que j'ai dans ma classe de bootstrap :

Code:

        protected function _initRouter()
        {
            $this->bootstrap('loader');
            
            $router = Zend_Controller_Front::getInstance()->getRouter();
            $route = new Zend_Controller_Router_Route(':module/:controller/:action', array('module' => 'default', 'controller' => 'index', 'action' => 'index'));
            $router->addRoute('route1', $route);
            
            $route = new Zend_Controller_Router_Route(':project/:module/:controller/:action/', array('project' => 'default', 'module' => 'default', 'controller' => 'index', 'action' => 'index'));
            $router->addRoute('route2', $route);
            
            return $router;
        }

Cela fonctionne dans le sens où ma variable est bien renseignée comme je le souhaite. Le problème avec ça, c'est que le routeur ne détecte plus le fait que le visiteur saisisse une URL eronnée (module ou controleur inexistant). Dans le cas d'une URL erronnée, la vue default/index/index (module/controller/view) est affichée.

Je souhaiterais donc juste paufiner ce routage pour permettre à nouveau la détection d'url éronnées.

Merci d'avance !

Hors ligne

 

#2 26-06-2010 10:16:29

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Zend Router][ZF 1.10.5] Routage personnalisé dans appli modulaire

regarde le fonctionnement de Zend REST dans le dossier il y a un pluggin pour redeffinir la route
dans ce cas il redéfini la route en tenant compte du verbe HTTP
mais ça te donnera le principe à utiliser

la donc est pas mal foutue pour
en faire un à soit.

A+JYT

Hors ligne

 

#3 26-06-2010 11:14:23

rclsilver
Nouveau membre
Date d'inscription: 17-06-2010
Messages: 6

Re: [Zend Router][ZF 1.10.5] Routage personnalisé dans appli modulaire

Salut,

Merci pour ta réponse, néanmoins, même après avoir relu la documentation de Zend REST, je ne trouve pas de lien avec mon problème.

Mon seul inconvénient avec ma solution est que je perds la notion de module/controller introuvable. Une petite précision, j'ai ajouté dans mon layout l'affichage des paramètres de la requête, et par exemple, si je veux accéder au module snapshot, contrôleur index et action index (module qui n'existe pas encore) via l'url http://monsite.com/projet1/snapshot/, j'ai bien mes paramètres qui sont remplis de cette façon :
array(4) {
  ["project"] => string(7) "projet1"
  ["module"] => string(8) "snapshot"
  ["controller"] => string(5) "index"
  ["action"] => string(5) "index"
}

Par contre, au lieu d'avoir une erreur comme quoi le module snapshot n'existe pas, j'ai ma vue default/index/index qui s'affiche (module/controleur/action).

Je voudrais être le moins intrusif possible dans le Framework pour ce routage. Je ne suis pas contre coder une classe de Route à la main, mais j'ai comme l'impression que c'est quelque chose de déjà prévue dans le Framework, et ça me gênerait de recoder la roue en fait.

Merci pour vous réponses !

Hors ligne

 

#4 29-07-2010 11:07:36

TeChn4K
Membre
Date d'inscription: 29-07-2010
Messages: 12

Re: [Zend Router][ZF 1.10.5] Routage personnalisé dans appli modulaire

rclsilver a écrit:

Salut,
Par contre, au lieu d'avoir une erreur comme quoi le module snapshot n'existe pas, j'ai ma vue default/index/index qui s'affiche (module/controleur/action).

Moi aussi j'ai ce problème !! Et c'est plutôt embêtant pour faire ses routes ... Help !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages