Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-09-2009 20:14:23

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Notions de MVC

Bonjour,

Voici quelques notions de base en MVC qui me posent problème.

Prenons l'exemple d'une structure de site.

Dans cet exemple, qu'est-ce qui est Controller ? Qu'est-ce qui est Action ? Qu'est-ce qui est Module ?
- sport/ est-il un controller, un module ?
- si sport/ est un module, comment créer /sport/laune ?
- Qu'est-ce que /foot/ ?
- Y a-t-il une notion entre dossier et page avec controller et action ?
- etc...

Problème tout simple, comment créer une page (contact par exemple) à la racine du site.
C'est à dire que je ne veux pas avoir à créer une URL du type http://www.example.com/index/contact

Je suis un peu perdu, merci de m'éclairer sur ces quelques concepts.

Hors ligne

 

#2 09-09-2009 20:51:50

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Re: Notions de MVC

/contact  controller

faut pense que t'a les index

http://www.example.com = http://www.example.com/index

si tu veu une page contact a la racine  fait

http://www.example.com/index/contact

Hors ligne

 

#3 09-09-2009 20:53:11

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: Notions de MVC

Bonsoir dorian53,

A mon avis, ce n'est pas vraiment un notion de motif MVC. Mais je t'invite a regarder ici.

Après, pour répondre à ta question, sport pourrait être le module comme le controller. Tout dépend de la configuration de la route. Mais je pencherais plus pour un module. Et laune un controller ainsi que foot.

Voila mais la doc de Zf est bien faite sur ce sujet wink

Hors ligne

 

#4 09-09-2009 22:26:52

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: Notions de MVC

stealth35, justement je ne .veux pas de http://www.example.com/index/contact
Comment créer une page à la racine. Un truc aussi simple que ça, je ne sais pas comment faire.

nicko, si laune est un controller ainsi que foot... que sont /france et /l1 ?

Merci.

Hors ligne

 

#5 09-09-2009 22:41:17

stealth35
Membre
Date d'inscription: 30-08-2009
Messages: 29

Hors ligne

 

#6 09-09-2009 23:23:51

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: Notions de MVC

Tu peux faire
http://www.example.com/contact

C'est à dire que contact est un controller...
Un controller par page... moyen...

Et que faire avec les structures de niveaux inférieurs type /france et /l1 ?

Hors ligne

 

#7 10-09-2009 13:11:49

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: Notions de MVC

dorian53 a écrit:

nicko, si laune est un controller ainsi que foot... que sont /france et /l1 ?

Tous dépend comme est configurer la route. France peut être une action, ou un paramètre associé à l1.

Hors ligne

 

#8 10-09-2009 16:35:32

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: Notions de MVC

Oké j'vais me pencher la dessus.
Tu me confirmes qu'il est possible d'avoir une page à la racine d'un site en jouant avec les routes ?
http://framework.zend.com/manual/fr/zen … outer.html
La page est costaud je prendrai de la lire plus tard.

Hors ligne

 

#9 10-09-2009 17:04:31

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: Notions de MVC

ca fait pas longtemps que je suis sur zend (2-3 mois). Mais un truc que j'ai appris, c'est que l'on peut tout faire avec Zf. Sauf le café, les crêpes et ... wink

Il me semble que c'est possible par ce que à un endroit dans la doc il est noté (je résume) : que l'on peut transformer une url de type module/controller/action/qlqc en un nom personnalisé.

Mais si je me trompe que l'on me corrige tout de suite !

Bonne continuation.

Hors ligne

 

#10 10-09-2009 17:08:15

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Notions de MVC

En gros, la routes par default du ZF est sous la forme http://monsite.com/:controller/:action/ … mN/valeurN

Avec la propriété suivante :
Si tu accèdes à la page http://monsite.com/, cela revient à appeler la page http://monsite.com/index/index (controller = index, action = index)

Donc si tu veux une page http://monsite.com/contact, tu peux :
- créer un action contact dans ton controller index => http://monsite.com/index/contact
- créer une page index dans ton controller contact => http://monsite.com/contact/index
- créer ta propre route en précisant par exemple que http://monsite.com/contact pointe sur http://monsite.com/relactionClient/contact (controller = relationClient, action = contact)

Voilà, j'espère ne pas t'avoir perdu.

Le plus efficace reste tout de même de lire la doc et te faire différente tuto de quickstart (practice, practice, practice again)

Dernière modification par slaughter (11-09-2009 10:36:54)

Hors ligne

 

#11 10-09-2009 21:05:05

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: Notions de MVC

Merci à vous c'est beaucoup plus clair. Y'a plus qu'à tester.

Dernière modification par dorian53 (10-09-2009 21:05:39)

Hors ligne

 

#12 11-09-2009 20:21:14

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

Re: Notions de MVC

Il suffit d'aller lire la documentation. Le composant Zend_Controller_Router_Route permet de définir les routes comme on le souhaite. Les routes et le mvc n'a rien à voir quelque part, car tu peux former les routes comme ça te chante. Il suffit de traduire cela en module, contrôleur, et action après coup. Tu as plusieurs types de routes : static, regex, standard, etc.

Pour des pages comme contact, login, etc peuvent être réalisées avec Zend_Controller_Router_Route_Static par exemple.

L'organisation d'une structure MVC ne se raisonne pas de cette manière. Il faut plutôt passer par de l'UML pour regrouper les notions/ressources qui ont des liens entre elles. Sekaijin avait proposé une explication dans un post du forum, il me semble.

Une vison récurrente est d'avoir un contrôleur CRUD. Le contrôleur représente une ressource comme un sujet de forum par exemple. Les actions sont lire, écrire, supprimer, éditer, etc.

Qu'attends-tu au juste d'une url comme http://www.example.com/sport/foot/france/l1/classement ? Quelle ressource est concernée ? quelles parties sont des paramètres ?
Si tu présentes des résultats de différents sports, un sport pourrait être une ressource. Si tu as un modèle et traitement générique selon les sports, la France est une nation, le foot un type de sport, la ligue 1 une division. Le classement pourrait être une action. Tu pourrais considérer afficher des classements d'une division d'un sport de manière similaire ou selon des paramètres propre à chaque sport.

Tu devrais peut-être revenir en arrière : mettre de côté la programmation, et ressortir une feuille. Tu fais des scénarios d'utilisation, des schémas, de l'UML et/ou autre méthode pour formaliser tes idées/besoins. C'est plus facile de raisonner de façon ordonnée.

EDIT : j'ajouterai que la génération des urls vient en aval et non en amont. Tes besoins/scénarios détermineront les URL. L'URL rewriting pour favoriser le référencement et l'utilisation expert d'URL sont des masques qui doivent renseigner les informations nécessaires à l'aiguillage (module, contrôleur, action, params).

Le fait d'avoir http://localhost/login au lieu de http://localhost/auth/login est une utilisation experte pour moi. Mais ce n'est pas très organisé de constituer un contrôleur login, un autre logout, car login et logout sont des actions d'un contrôleur Auth. Auth est la ressource identité d'un visiteur. Login et logout correspondent à créer et à supprimer cette identité. Il semble assez logique de les regrouper.

Dernière modification par Intiilapa (11-09-2009 20:50:26)

Hors ligne

 

#13 16-09-2009 09:28:08

dorian53
Membre
Date d'inscription: 08-03-2009
Messages: 41

Re: Notions de MVC

Super message Intiilapa, merci.

J'ai réussi à jouer avec les routes et ça m'a beaucoup aidé à comprendre la conception de l'architecture.

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