Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
je vous explique rapidement ce que je souhaite faire, et ou ce poses les problemes.
je gere une arborescence via Zend, et le but est d'obtenir des url du genre
ndd.com/cat1/souscat1/
ndd.com/cat2/souscat2/
ndd.com/cat2/souscat2/soussouscat2
tout ca qui se construit bien sur "dynamiquement"
toutes ces urls sont redirigés a l'aide du routeur rewrite sur le meme controller via un fichier ini
;################ niveau 3 ####################### routes.categories3.route = /:cat1/:cat2/:cat3/ routes.categories3.defaults.nbcat = 3 ;################ niveau 2 ####################### routes.categories2.route = /:cat1/:cat2/ routes.categories2.defaults.nbcat = 2 ;################ niveau 1 ####################### routes.categories1.route = /:cat1/ routes.categories1.defaults.nbcat = 1
sauf qu'avec ce systeme... toutes les url sont redirigé, ce qui bien sur, ne me plais pas, par exemple, si je veux une url ndd.com/contact, je veux qu'elle appelle le controleur Contact
bien sur je pourrai ecrire une regle de reecriture dans le .ini pour contact, mais l'idéal en faite, serai que toutes les urls, si elle ne trouve pas de controleur, appelle un controleur par default...
sauf que je n'arrive pas à le faire si qq un peu me filer un coup de pouce, ca serai sympa
( si vous avez une autre facon de gerer, n'hésitez pas )
et bravo pour ce forum qui m'a déja bien aidé a demarrer !
Hors ligne
il semble que j'ai trouver un paliatif, mais je trouve ca un peu cracra
$request = new Zend_Controller_Request_Http(); $response = new Zend_Controller_Response_Http(); try { $frontController->dispatch($request, $response); } catch (Exception $exception) { $request->setPathInfo('/index/'); $frontController->dispatch($request, $response); }
si qq un a une solution plus elegante ?
Hors ligne
Bonjour,
Perso, j'aurais tendance à faire une route du type
routes.categories3.route = /category/:cat1/:cat2/:cat3/
et après quand ça ne commence pas par /category/ ça rebalance vers le controller par défaut.
Maintenant si tu tiens à tes URL, tu ne pourras pas faire ce que tu veux uniquement avec le routeur. Le routeur ne pourra pas distinguer tout seul un nom de catégorie et un nom de controlleur.
Si tu veux faire ça, regarde du coté des plugins et du preDispatch. Dans ton predispatch, tu vérifies si le premier paramètre correspond à une catégorie. Si oui, tu continues, sinon tu indique que le premier paramètre est le controller.
Note : c'est bien à faire dans un plugin et pas dans un helper, parce qu'il ne vaut mieux pas que ton action soit déjà chargée.
A+, Philippe
Hors ligne
Pages: 1