Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-01-2008 16:01:28

ALkyD
Membre
Lieu: Limoges
Date d'inscription: 11-07-2007
Messages: 69
Site web

Questions sur le MVC

Salut,
Je me permet de poster un topic dans le forum MVC pour essayer justement de mieux comprendre ce système. Je suis actuellement en train de faire un CMS maison qui utilise le ZF mais pas le MVC (j'utilise une approche similaire au MVC avec appels classes/méthodes dans l'URL). Néanmoins ca fait plusieurs mois que j'essaye de regarder petit à petit comment marche le MVC et quels seraient les avantages que je pourrais en tirer par rapport à mon CMS. Et j'avoue que j'ai beaucoup de mal à passer le cap (arborescence des dossiers, views, helpers, plugins, etc.), jusqu'à il y a deux jours, où j'ai finalement décidé de réécrire mon CMS en MVC.

Aujourd'hui, je sens le potentiel énorme que réserve les MVC. J'ai beau avoir feuilleté la doc officielle, j'aurais toutefois quelques questions (de newb) pour bien cerner l'ensemble...
1. Le MVC est-il le meilleur choix en matière de développement Web (en ne tenant pas compte de la taille du site).
2. La différence entre les plugins et les helpers ?
3. Peut-on faire des URL complètement personnalisées ? Du genre http://localhost/truc/machin/toto.html (avec un .html à la fin)
4. Peut-on "hiérarchiser" les controllers ? Par exemple, http://localhost/111/222/333/444 qui appelerait le "sous-sous-controlleur 111", le "sous-controller 222", le controller 333 et l'action 444 ?
5. La méthode init() d'un controller permet d'initialiser. Comment faire pour initialiser tous les controllers d'un coup sans répéter init() à chaque fois ?
6. A quand une FAQ sur les MVC sur z-f.fr ? smile

Voila... smile

Hors ligne

 

#2 24-01-2008 16:42:38

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: Questions sur le MVC

Question 1 : Ca dépend de plein de param
Question 3 : Oui, en gerant le routage
Question 4 : Logiquement non, je vois mal une hierarchisation de controller, mais c'est jouable avec une notion de module
Question 5 : En surchargeant Zend_Controller

Hors ligne

 

#3 24-01-2008 17:33:12

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

Re: Questions sur le MVC

Très bonne questions tiens. Ca devrait en aider plus d'un!

Mes réponses personnels à moi qui n'est pas un pro of the php mais qui se débrouille et pratique depuis depuis presque 1 an le zf:

1. Oui toujours si on ne tiens pas compte de la taille du site. Car c'est une architecture très propre (il y'en a peut être d'autres...) et donc très facilement évolutive/maintenable.

2. Les helpers sont des aides (oula merci la traduction smile pour l'affichage (génération d'html en générale) ou pour les actions que tu sollicite à la main (genre $this->monHelper() ) alors que les plugins sont des aides que tu n'a qu'a branché (ohohoh encore un traduction de ouf xD ) sur ton controller et qui se démerde sans que tu les sollicites dans ton code (enfin en général, quelqu'un peut me contredire...). Un plugin pourrait utiliser un helper mais l'invers j'y crois pas trop.

3. Oui c'est très simple. Si tu sais faire avec des htacess (url rewirting conventionel) tu ne sera pas dépayssé (cf. Zend_Controller_Router_Route_Regex)

4. Pour hiérarchisé tu as seulement 3 niveaux (module/controller/action => dossier/classe/fonction pour parler gras).

5. Une précision, au lieu de faire étendre ton controller du Zend_Controller_Action, tu le fais étendre de ton propre controller où dedans tu mets ta propre fonction init(), qui lui m^ême étend le Zend_Controller_Action.

6. Ben là, c'est bien parti pour le devenir smile .

Bien sur ce que j'ai dis là c'est mon point de vue, je dis pas que j'ai tout bon et d'ailleurs les plus pro d'ici pourrait m'en apprendre encore big_smile

Hors ligne

 

#4 25-01-2008 09:11:32

ALkyD
Membre
Lieu: Limoges
Date d'inscription: 11-07-2007
Messages: 69
Site web

Re: Questions sur le MVC

D'autres questions :
1. Si on a une interface d'administration, stocké dans le dossier "admin/", lequel est le mieux ? Faire un deuxième bootstrap dans ./admin/index.php ou utiliser celui dans ./index.php ?
2. Même question concernant les requêtes ajax : Faut-il faire un bootstrap (dans index-ajax.php par exemple) uniquement dédiées à elles (pour éviter que certains traitements ne soient réalisés, comme l'affichage de menu, inutile dans une requête ajax mais qui apparaît dans chaque page "normale") ?
3. Par rapport à ma précédente question n°5 et init() : Utilisez-vous tous une classe dérivée de Zend_Controller_Action, sur laquelle toutes vos classes controller dérivent ? J'ai l'impression que j'ai pas trop le choix puisque j'ai un menu à afficher sur chaque page, ça me semble être la meilleure solution... non ?
4. J'utilise Smarty et j'ai fais le tuto de Philippe sur Kitpages, j'ai donc fait une classe de vue implémentant Zend_View_Interface avec Smarty dedant. Si je veux intégrer des méthodes comme "addStylesheet()", "addScriptJs()", "setTitle()" (de la page), etc., c'est dans cette classe qu'il faut les rajouter, où existe-il un autre endroit plus approprié ?

Hors ligne

 

#5 25-01-2008 09:26:14

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

Re: Questions sur le MVC

1. Pour l'admin, perso j'utilise la notion de module
2. Pour l'ajax pas besoin, il existe une méthode Zend_Controller_Request::isXmlHttpRequest() qui te permet de savoir si tu est dans un requete ajax où non (tu peux donc inclure ou pas ton menu).
3 et 4. Perso oui, j'ai souvent cela, mais bientôt Zend_Layout sort (déjà dispo dans le svn) et il te permet d'avoir un template. De nouveaux herlpers vont arriver en même temps (tjs dispo dans le svn actuellement) et te permette de gérer un pile d'action pouvant être rendu à différent endroit dans ton template. Pour les meta & co, de nouveaux helpers arrivent aussi (headScript(),  headStyle(), headTitle(), headMeta()) et ça devrait répondre à tes besoins).

Pour les 2 derniers points, va voir ce nouveau tuto: http://julien-pauli.developpez.com/tuto … nd-layout/

Hors ligne

 

#6 28-01-2008 13:56:26

ALkyD
Membre
Lieu: Limoges
Date d'inscription: 11-07-2007
Messages: 69
Site web

Re: Questions sur le MVC

Encore qq questions smile

- La définition de routes doit se faire obligatoirement dans le bootstrap ? J'ai essayé d'en rajouter directement dans les méthodes init() et preDispatch() de mon controlleur mais ça n'a aucun effet...
- Je dispose de plusieurs controlleurs qui étendent un controller abstrait que j'ai fait, lui-même étendant Zend_Controller_Action. J'y ai rajouté une méthode postDispatch(), si bien que toutes mes actions sont suivies par le traitement effectué dans postDispatch(). Néanmoins pour quelques actions précises, j'aurai besoin de "désactiver" postDispatch(). Existe-il une méthode permettant de dire au controller d'ignorer l'étape postDispatch, ou bien faut-il que je me bidouille une variable, genre $_noPostDispatch = true, que je fais transmettre ?
- Smarty et Zend_Layout ne sont-ils pas similaires dans leurs tâches, c'est-à-dire le templating ? J'ai regardé la doc de Zend_Layout sur le svn mais ça ne m'a pas spécialement différent d'un $this->view->assign('xx', 'yy'), suivi d'un {$xx} dans le .tpl... Vos avis ?
- Dans la doc officielle, ils disent que si on veut initialiser sa propre vue, il faut utiliser initView(). Problème : elle n'est jamais appelée automatiquement, c'est normal ? Du coup, j'appelle initView() depuis init()...

Dernière modification par ALkyD (28-01-2008 13:58:01)

Hors ligne

 

#7 28-01-2008 14:19:08

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

Re: Questions sur le MVC

Les routes obligatoirement dans le bootstrap car le procéssus de routage est effectué avant d'appeller les bon controller/class et la bonne action/function...

Pour le coup du postDispatch je dirais que la vairable ira très bien (je connais rien de prévu)

Le reste je sais pas trop smile

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