Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-06-2011 21:51:46

xenesis
Membre
Date d'inscription: 25-08-2009
Messages: 23

Router hostname dans le fichier config

Bonjour à tous

J'ai un site internet appelé toto.com
J'ai également un espace client que j'ai appelé manager.toto.com

toto.com utilise le module web
manager.toto.com utilise le module manager

pour éviter d'avoir à répéter le nom du module dans les url, j'ai décidé de faire 2 routes dans le fichier config.ini avec le chainage du hostname

Voici le code :

resources.router.routes.web.route = "/:controller/:action/*"
resources.router.routes.web.type = "Zend_Controller_Router_Route"
resources.router.routes.web.defaults.module = "web"
resources.router.routes.web.defaults.controller = "accueil"
resources.router.routes.web.defaults.action = "index"

resources.router.routes.manager_host.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.manager_host.route = "clients." HOSTNAME
resources.router.routes.manager.route = "/:controller/:action/*"
resources.router.routes.manager.type = "Zend_Controller_Router_Route"
resources.router.routes.manager.defaults.module = "manager"
resources.router.routes.manager.defaults.controller = "login"
resources.router.routes.manager.defaults.action = "index"
resources.router.routes.manager_host_route.type = "Zend_Controller_Router_Route_Chain"
resources.router.routes.manager_host_route.chain = "manager_host,manager"

Dans le premier paragraphe il s'agit d'utiliser le module par défaut avec la route standard
En l'occurrence, que ce soit clients.toto.com ou toto.com c'est cette route qui sera utilisé.

Cas général donc (comme mentionné dans la doc de Zend LIFO)

Après je récupère le sous domaine et je le chaine avec la route. La seule chose qui change c'est le module utilisé qui est alors manager au lieu de web

http://clients.toto.com/moncontrolleur/ … m1/valeur1
http://toto.com/moncontrolleur/monaction/param1/valeur1

Sont donc deux url différentes or je n'arrive pas à aller dans le module manager. C'est comme si la requête s'arrête au premier paragraphe.

Par contre si je copie colle le premier paragraphe entre entre
resources.router.routes.manager.defaults.action = "index"
resources.router.routes.manager_host_route.type = "Zend_Controller_Router_Route_Chain"

Là ca marche, toto.com m'envoi vers le module web et manager.toto.com vers le module manager.

J'avoue ne pas comprendre le fonctionnement du parseur car logiquement il devrait parcourir le document de bas en haut comme cela  :

Si je (je me met à la place du parseur) rencontre *.toto.com ou toto.com directement j'envoi vers le module web.. je continue.. à tiens j'ai trouvé http://manager.toto.com.. ahhh là il faut que j'utilise la route manager donc.

Si quelqu'un peut m'aider ça serait sympa.

PS : Je pourrai aussi faire une route genre toto.com/manager/controller/action/parametre/valeur qui renvoi toujours vers le bon module, mais il faut a chaque fois répéter le mot manager. Je préfère avoir donc http://manager.toto.com et toto.com de nombreux sites fonctionnent comme cela d'ailleurs

PS 2 : Est il possible de traduire le hostname également en le chainant ? Genre manager.toto.com en Anglais pourrait devenir clients.toto.com en Français .. ?

PS 3 : Dans la doc de Zend ils marquent cela "Les routes par nom d'hôtes peuvent, mais ne devraient pas être utilisées comme ceci. La raison à cela est que qu'une route par nom d'hôte seule ne correspondra à aucun chemin. Donc vous devez donc chaîner le chemin d'une route à une route par nom d'hôte. "

Je ne comprends pas du tout ce qu'ils veulent dire.. j'ai beau chercher et remuer google dans tous les sens je ne trouve rien.

PS 4 : Une toute petite question par rapport aux regexp.. j'ai vu qu'on peut faire du reverse url. A quoi cela sert-il donc ? Car mis à part générer des belles URL optimisée SEO en fonction des paramètres données dans le view->helper->url je ne vois pas trop l'utilisé, d'autant plus qu'il n'est pas possible de rendre un paramètre optionnel toto([a-z]?)\.html le reverse URL doit etre toto%s.html mais si je rajoute ([a-z]?(-[a-z]?))\.html dans le patern, le rerverse devrait etre %s%s\.html or %s répétera deux fois le premier [a-z].. j'ai donc pas du tout comprendre.. si quelqu'un peut également m'éclairer la lanterne je en lui serai reconnaissant

Merci !

Hors ligne

 

#2 02-06-2011 15:02:57

xenesis
Membre
Date d'inscription: 25-08-2009
Messages: 23

Re: Router hostname dans le fichier config

Je simplifie j'ai ceci :

resources.frontController.defaultModule = "site1"
resources.frontController.defaultControllerName = "accueil"
resources.frontController.defaultAction = "index"
resources.frontController.useDefaultControllerAlways = false
resources.layout.layout = "template"

resources.router.routes.site1_host.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.site1_host.route = "www.site1.home"
resources.router.routes.site1.type = "Zend_Controller_Router_Route"
resources.router.routes.site1.route = "/:controller/:action/*"
resources.router.routes.site1.defaults.module = "site1"
resources.router.routes.site1.defaults.controller = "accueil"
resources.router.routes.site1.defaults.action = "index"
resources.router.routes.site1_host_route.type = "Zend_Controller_Router_Route_Chain"
resources.router.routes.site1_host_route.chain = "site1_host,site1"


resources.router.routes.site2_host.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.site2_host.route = "www.site2.home"
resources.router.routes.site2.type = "Zend_Controller_Router_Route"
resources.router.routes.site2.route = "/:controller/:action/*"
resources.router.routes.site2.defaults.module = "site2"
resources.router.routes.site2.defaults.controller = "accueil"
resources.router.routes.site2.defaults.action = "index"
resources.router.routes.site2_host_route.type = "Zend_Controller_Router_Route_Chain"
resources.router.routes.site2_host_route.chain = "site2_host,site2"

Il me renvoi toujours sur site2 même si je tapes http://site1.home (ou www.site1.home) (redirection de permanente de site1.com vers www.site1.com par .htaccess)

Je ne comprends pas pourquoi : http://www.site1.com devrait correspondre avec la route du premier block du routing.. pourquoi il l'ignore et continue vers site2 ?

Non en fait il utilises le default module et ignore les routes que je lui donnes.. pourquoi ?
Est ce qu'il y a moyen également de préfixer les classes du module par défaut, car si je changes le defaut module, (je le mets sur site2 par exemple) faut que je préfixe les controllers de site1 avec Site1_Controller..

Dernière modification par xenesis (02-06-2011 15:04:48)

Hors ligne

 

#3 07-06-2011 14:35:02

xenesis
Membre
Date d'inscription: 25-08-2009
Messages: 23

Re: Router hostname dans le fichier config

une idée .. ?

Hors ligne

 

#4 08-06-2011 11:15:40

xenesis
Membre
Date d'inscription: 25-08-2009
Messages: 23

Re: Router hostname dans le fichier config

personne.. ?

Hors ligne

 

#5 21-06-2011 12:50:49

xenesis
Membre
Date d'inscription: 25-08-2009
Messages: 23

Re: Router hostname dans le fichier config

J'ai vraiment besoin d'un coup de main pour comprendre là..

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