Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-07-2009 21:04:13

nuranto
Membre
Date d'inscription: 20-01-2009
Messages: 24

[ZF1.8][Route] Perdu sur des problematiques simples...

Bonjour,

Je suis en train de me pencher sur les routes de ZF (je découvre, soyez indulgents ^^), et j'avoue etre un peu perdu.

Ce que j'ai :
Une architecture modulaire : Frontend, Admin, Annonce, Admin-Intervenant1, Admin-Intervenant2, etc..
En gros, c'est un site ou l'on dépose des annonces (une annonce a un code du type [a-z-]+)
Pour mes liens je fait appel a une fonction maison qui utilise la fonction assemble() du routeur.

Ce que je voudrais :

h.ttp://www.monsite.com/Annonce/index/index/code/mon-annonce
devienne
h.ttp://www.monsite.com/mon-annonce


http://www.monsite.com/* 
devienne
h.ttp://www.monsite.com/motclef/*


h.ttp://www.monsite.com/Admin/
reste
h.ttp://www.monsite.com/Admin/



(+ la gestion des langues )


Voici ma config actuelle :


routes.ini

Code:

[url_rewriting]
;ANNONCE
routes.annonce.type = "Zend_Controller_Router_Route"
routes.annonce.route = ":code/*"
routes.annonce.defaults.module = "Annonce"
routes.annonce.defaults.controller = "index"
routes.annonce.defaults.action = "index"
routes.annonce.defaults.lang = "fr"
routes.annonce.defaults.code = ""



routes.basic2.type = "Zend_Controller_Router_Route"
routes.basic2.route = "motclef/:lang/:module/:controller/:action/*"
routes.basic2.defaults.module = "Frontend"
routes.basic2.defaults.controller = "index"
routes.basic2.defaults.action  = "index"

;map lang?
routes.basic.type = "Zend_Controller_Router_Route"
routes.basic.route = "motclef/:module/:controller/:action/*"
routes.basic.defaults.module = "Frontend"
routes.basic.defaults.controller = "index"
routes.basic.defaults.action  = "index"
routes.basic.defaults.lang  = "fr"

Dans mon bootstrap :

Code:

        $router = Zend_Controller_Front::getInstance()->getRouter();
        $config = new Zend_Config_Ini(BP . DS . 'app' . DS . 'etc' . DS . 'routes.ini', 'url_rewriting');
        $router->addConfig($config, 'routes');

Mon probleme :

Par exemple, sur la page http://www.monsite.com/mon-annonce, mes appels a assemble() me retourne des urls de la forme :
/mon-annonce/module/Annonce/controller/index/action/index/param1/value1/param2/value2


J'aimerais avoir :
/mon-annonce/param1/value1/param2/value2


Avez vous une idée ?

Hors ligne

 

#2 22-07-2009 00:00:42

etaty
Membre
Date d'inscription: 16-10-2008
Messages: 49

Re: [ZF1.8][Route] Perdu sur des problematiques simples...

si le champ "mon-annonce" est une variable, alors ça sera pas facile.

je te conseille de mettre une constante avant : site.com/annonces/Mon-Annonce

Hors ligne

 

#3 22-07-2009 08:08:36

nuranto
Membre
Date d'inscription: 20-01-2009
Messages: 24

Re: [ZF1.8][Route] Perdu sur des problematiques simples...

Oui c'est bien une variable...
Le problème est qu'il en a été défini ainsi avec le client.

Si il n'y a pas moyen avec les routes (ce qui serait dommage), je réécrirais à l'ancienne avec un htaccess..

Personne n'a de solution?

Hors ligne

 

#4 22-07-2009 09:04:43

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [ZF1.8][Route] Perdu sur des problematiques simples...

Ta réécriture avec htaccess ne ferais rien de mieux qu'une route avec Zend_Controller_Router_Route_Regex

Il te faudrait dans tous les cas mettre quelques choses de communs à tes urls, car avec une regex ( que ce soit dans ton htaccess, ou avec le router du zf ) il te faut pouvoir la différencier.

Après tu peux par exemple faire monsite.com/mon-annonce+(id) et faire un regex là dessus.

De plus tu ne pourra pas faire de la réécriture classique car tu ne pourra pas faire un redirection vers le index.php avec une autre url. Je sais pas si tu saisi bien le principe du router qui est de "router" à partir d'un url depuis l'appel du bootstrap. Quoi que en testant index.php/annonces/index/index/monannonce. M'enfin une solution intégré au Framework serait plus propre, maintenable et évolutive.

Hors ligne

 

#5 22-07-2009 09:40:09

nuranto
Membre
Date d'inscription: 20-01-2009
Messages: 24

Re: [ZF1.8][Route] Perdu sur des problematiques simples...

Oui c'était mon idée, de faire un rewritecond spécial pour ce cas la, et ensuite ne pas utiliser la fonction url().

Et en effet, je ne veux pas du tout en arriver la, mais j'ai vraiment besoin de ce resultat.

Et en fait, j'y suis arrivé avec ma configuration que j'ai présenté ci-dessus.

Le problème ( = il m'ajoute le module, le controller et l'action dans l'url sous la forme /module/NomModule/controller/NomCont/action/Action ) ne semble pas venir de la.


Je vais trouver un exemple plus simple du probleme...

Voila : Admettons, je veux réécrire un nom de module (par exemple, je veux changer l'url pour arriver a l'admin)

Code:

routes.admin.route = "legendary/:controller/:action/*"
routes.admin.defaults.module = "Admin"
routes.admin.defaults.controller = "index"
routes.admin.defaults.action = "index"

lors de mes appels a assemble, j'obtiens des urls de la forme :
/legendary/index/login/module/Admin  (par exemple)
à la place de
/legendary/index/login


En fait, c'est ca mon vrai problème et ca ne dépend meme pas de ma problematique d'annonces !

Hors ligne

 

#6 24-07-2009 11:13:28

nuranto
Membre
Date d'inscription: 20-01-2009
Messages: 24

Re: [ZF1.8][Route] Perdu sur des problematiques simples...

Le problème ne survient pas si je ne specifie pas :

Code:

'module' => 'Admin'

dans l'array du premier parametre d'assemble().

Mais le but n'est pas de modifier tous les appels a la fonction url()...

Je ne comprends vraiment pas;
Personne n'a eu ce probleme ?

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