Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-03-2014 17:33:30

sarigue
Nouveau membre
Date d'inscription: 21-03-2014
Messages: 1

Controleur / Action par défaut

Bonjour à tous :-)

Sans doute cette question est-elle récurrente, mais j'ai passé la journée à cherche :-/

Zend utilise par défaut un modèle basé sur l'URL : module/controleur/action/parametres/separes/par/slash
ou à défaut : controleur/action/parametres/separes/par/slash

Or, je souhaiterais éviter de créer un ensemble contrôleur/vue par page (contenu) !... Car en réalité, j'ai plusieurs contenus mais qui peuvent tous aller dans la même vue. A noter que l'accès au contenu peut être hiérarchisé pour être ordonné : je peux y accéder par "page.htm" ou par "zone/page.htm".

l'idée est donc de pouvoir accéder aux pages standards par :
domaine.tld/page1
domaine.tld/page2
domaine.tld/zone1/page1
domaine.tld/zone1/page2
etc.
De cette façon dans mon controleur, j'ai juste à aller récupérer le chemin d'accès et à lire le fichier HTML ou effectuer la requête en base.

En fait, ça revient à avoir un modèle classique module/controleur/action/params mais avec le module, controleur et action par défaut.

Et en effet, si je teste domaine.tld/default/index/index/page1 ça fonctionne...
SAUF...
... Sauf que j'aimerais éviter ce moche /default/index/index/ dans mon URL !

Difficulté supplémentaire : je peux QUAND MEME avoir des modules et des controleurs spécifiques:

domaine.tld/admin/..... doit pouvoir appeler les controleurs et actions du module "admin", et pas un hypothétique contenu.

domaine.tld/recherche/..... doit pouvoir appeler le controleur "recherche" et ses actions.

etc.

L'idée serait donc d'avoir le fonctionnement suivant :

- Un module invalide renvoi vers le contrôleur (comme c'est le cas par défaut)
- Un controleur invalide renvoi vers l'action
- Une action invalide renvoi vers l'action par défaut

Soit l'algo de fonctionnement suivant :

- Prendre l'URL /a/b/c/d/e/f ....
- Teste si "a" est un module
- Si oui, utiliser le module "a" et continuer avec le reste de l'URL ("b" est-il un controleur ? etc.)
- Si non, utiliser le module par défaut "default" et teste si "a" est un controleur
- Si oui, utiliser le controleur a et continuer avec le reste de l'URL ("b" est-elle une action ?)

Jusque là c'est le fonctionnement standard.
Mais il faudrait aller plus loin :

- Si non (si "a" n'est pas un controleur"), utiliser le controleur par défaut "index" et teste si "a" est une action.
- Si oui, appeler l'action a (aAction())
- Si non, appeler l'action par défaut "index". Le reste de l'URL étant le paramètre

Et c'est donc dans ce cas limite IndexController::indexAction() qui va s'occuper de gérer le reste (-> Il me faut donc pouvoir appeler ErrorController depuis l'action, si par exemple le contenu n'existe pas)

Est-ce possible ?

Merci

PS:  et idéalement, ce fonctionnement devrait pouvoir idéalement se répéter pour tout controleur/module :
- L'élément existe ? L'utiliser. N'existe pas ? Utiliser la valeur par défaut.
Par exemple, s'il existe un a/bController mais sans cAction, alors, il faut appeler a/bController::indexAction() avec c/d/e/f comme paramètre. S'il existe un module "a" mais sans "bController", alors, il faut appeler a/IndexController::indexAction() avec b/c/d/e/f comme paramètre. Etc. J'en demande peut-être trop ? :-p

Dernière modification par sarigue (21-03-2014 17:41:39)

Hors ligne

 

#2 20-07-2014 13:14:35

jamaldeen
Nouveau membre
Lieu: Abobo, Abidjan - Côte d'Ivoire
Date d'inscription: 25-09-2012
Messages: 6

Re: Controleur / Action par défaut

bonjour ton message étai trop long.
je crois que tu peut utiliser des fonction qui sont des action a créer dans ton controller et avoir une vue en fessan des switch ou des if imbriqués.

on ma parlé de mappage de lien. tu peu chercher dans ce sens la


Nous ne devons plus reinventer la ROUE, on doit l'utiliser... Partageons

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