Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-10-2011 21:43:21

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

[Résolu] [Zend_Route] questions diverses hors documentation

Bonjour,

Je ne savais pas trop comment résumer ça dans le sujet, sachant que le nombre de caractères y est limité...
Je vais essayer d'être clair.

1) Est-il possible de définir une route ailleurs que dans le bootstrap ou l'application.ini?
Je récupère mon menu de navigation dans ma base de données, et je construis mon objet Zend_Navigation de façon dynamique dans mon BaseController (dont chacun de mes controllers est une extension, je trouve ça pratique).
Dans ma table navigation, je stocke tous les paramètres nécessaires à Zend_Navigation (id, label, module, controller, action, etc...), y compris le nom de la route.
Je voudrais donc, lors de la construction de mon objet Zend_Navigation, définir les routes de façon statique (pour les pages "fixes") ou dynamique (pour les pages type "cms").
Mais il semble que cela ne fonctionne pas, en dehors de l'application.ini, ou du Bootstrap.php. Si je déclare mes routes ailleurs, elles ne sont pas définies et j'aboutis donc à une erreur 404.

2) Autre problème : mon appli est multilingue, mais je stocke la langue courante en session, car je ne veux pas qu'elle apparaisse dans l'url de mes pages. Je souhaite faire des routes multilingues, et je ne trouve que des exemples et des tutos qui donnent la langue en paramètre de l'url. Moi je voudrais, lors de la définition de ma route, récupérer la langue courante en session, et ainsi, afficher la bonne traduction dans mon url.
Mais je suis bloqué par le point 1), à savoir que dans le bootstrap, ma table de traductions n'a pas encore été construite, je ne peux donc pas construire mes routes traduites dans la langue courante, à ce niveau. Encore moins dans l'application.ini...

Suis-je clair?
Si non, je peux fournir plus d'infos, mais je ne veux pas démarrer cette discussion avec un post de trois pages :)

Merci d'avance pour votre aide et vos conseils

Dernière modification par delorbe (15-10-2011 10:34:21)

Hors ligne

 

#2 08-10-2011 14:21:05

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: [Résolu] [Zend_Route] questions diverses hors documentation

Salut,

1) Je n'ai pas testé directement mais normalement c'est possible dans le bootstrap de manière dynamique. Il te suffit de faire une fonction init dans ton Bootstrap, à partir de ce moment rien ne t'empêche d'aller piocher dans la base de données ou dans un fichier quelconque puis à spécifier tes routes.

Ou alors j'ai mal compris.

2) Tu as peut-être une raison de le faire mais sache que d'un point de vue référencement c'est pas très bien de ne pas faire figurer la langue dans l'URL (puisque les moteurs de recherches considéreront que les pages seront les mêmes, ce qui n'est pas le cas).

Sinon je ne comprends pas tout. Quand tu définis tes routes, il faut que tu fasses précéder tes éléments à traduire d'un arobase. De mémoire (vérifie sur la doc), si par exemple tu souhaites que l'URL www.exemple.com/login et www.exemple.com/connexion mènent vers la même page, il te suffit de spécifier la route de cette manière /@login et de mapper ça vers ton controlleur et l'action correspondante.

Ensuite, si dans ton fichier de traduction tu fournis une traduction pour login et que la locale est fr, automatiqueemnt il traduira ça en "connexion".

Sinon, tu as toujours el moyen, dans ton bootstrap, d'initialiser ton fichier de traduction avant tes routes.

Hors ligne

 

#3 08-10-2011 16:17:40

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: [Résolu] [Zend_Route] questions diverses hors documentation

Salut bakura,

Merci pour ta réponse smile

1) Tu as raison, rien ne m'empêche de construire mes routes dans le bootstrap, en fait.
Je vais essayer de le faire dans ma fonction _initRouter().

2) Hé bien, je le faisais juste pour simplifier l'url, car voir la langue en paramètre ne me plaisait pas, je trouvais que ça alourdissait l'url. Mais je n'avais pas de raison plus précise que celle-ci, et je ne savais pas ce que tu me dis à propos des moteurs de recherche.
Donc, merci pour cette remarque, je vais modifier ça également smile

Enfin, ton exemple :

bakura a écrit:

si par exemple tu souhaites que l'URL www.exemple.com/login et www.exemple.com/connexion mènent vers la même page

est exactement ce que je cherche à faire.

Et là encore, même après lu et essayé de comprendre la doc officielle de Zend (qui, je ne le répèterai jamais assez, ne m'a apporté que trop peu d'aide, de par sa conception et ses exemples jamais clairs et jamais hors contexte), je n'avais pas pigé le coup du @ pour définir ma route.
Je vais donc me pencher là-dessus une fois de plus.

En tout cas, ta réponse m'aide énormément, et je te remercie beaucoup smile
Je vais essayer de faire marcher tout ça.

Hors ligne

 

#4 08-10-2011 18:18:21

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: [Résolu] [Zend_Route] questions diverses hors documentation

De rien smile,

Si tu as des questions n'hésite pas !

Hors ligne

 

#5 15-10-2011 10:33:30

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: [Résolu] [Zend_Route] questions diverses hors documentation

Wow, j'ai enfin réussi smile

Il m'a fallu initialiser mes traductions, ma navigation et mes routes dans le bootstrap, et tout ça parce que je n'ai pas réussi à définir une route en dehors de ce bootstrap...

Mais bon, ça marche, je ne vais pas remettre tout le code ici car c'est assez touffu...
Si ça intéresse quelqu'un, je le ferai smile

Merci encore pour ton aide, bakura wink
Grâce à toi, j'ai maintenant des url de type
'www.monsite.dev/fr/une-page-comme-ci',
et 'www.monsite.dev/en/a-page-like-this',
le tout avec des routes qui marchent bien.

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