|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2003 Messages : 17 ![]() |
Bonjour,
je développe une sorte de blog multilangue avec le Zend Framework et je me posais quelques questions sur le modèle MVC. D'après ce que j'ai compris de la doc, l'utilisateur demande une url qui est décomposée pour avoir le contrôleur. La requête est passé au controleur qui passe les donnees à la vue et ensuite retourne la bonne vue. La question que je me pose, c'est que dans ce système ce n'est que le contrôleur qui accède au modèle puis passe les données à la vue. Alors que dans le design pattern MVC la vue peut aussi lire les données. Pour etre plus clair: J'ai une classe du modèle qui est Langue qui me permet d'acceder aux differentes langues de mon site. Que faut il mieux faire : 1) dans le controlleur faire un Langue->fetchall puis un this->view->assign ou 2)dans la vue directement un Langue->fecthAll Ce qui me parait bizarre c'est que dans le second cas, lorsque l'utilisateur ne passe aucune données, le contrôleur est vide. En gros dans le second cas le contrôleur n'est la que pour faire des update ou des insert dans la base de donnée ou encore pour filtrer ce que donne l'utilisateur. Est-ce une bonne utilisation du MVC ? |
|
|
00
|
|
|
#2 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Il ne faut pas mettre de recherche de données dans la vue. La vue doit être simplifiée, contenir le moins possible de PHP. Les données doivent être prêtes avant d'entrer dans la vue.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2003 Messages : 17 ![]() |
alors pourquoi dans le modèle MVC on voit la vue qui accede au modele:
![]() c'est le getdata entre la vue et le modèle qui me met des doutes... Par exemple, si je dois afficher une donnée qui est dans un fichier et qui n'a pas besoin d'être tester ou modifier, autant que ce soit la vue qui y accède directement plutôt que ce soit le contrôleur qui y accède puis qui le donne à la vue. Par contre si la donnée doit être vérifié ou testé alors c'est le contrôleur qui y accède. Donc il y aurait 2 endroits possible pour accéder aux données, c'est pour ça qu'il y a 2 getdata dans le schéma. ça me parait logique non ? |
|
|
00
|
|
|
#4 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Le schéma montre que toutes les données passent par le modèle, la vue n'a jamais d'accès direct à la BDD. Le principe du MVC est de découper les rôles afin de ne pas avoir de cas particulier. Jamais la vue n'accède directement aux données sources, elles passent toutes par le modèle.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#5 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2003 Messages : 17 ![]() |
Citation:
Ce n'est que le modèle qui accède directement aux données, c'est clair et c'est le principe du MVC de dissocier. Ma question se voulait plus dirigé sur la manipulation du modèle. En gros, est-ce que la vue peu instancier un objet du modèle pour accéder à une donné ou il n'y a que le contrôleur qui a le droit d'instancier un objet du modèle ? d'après le getdata entre view et model, ça laisse sous entendre que dans la vue on peut écrire un truc du style: Code :
Pour moi si la vue n'a pas le droit de manipuler des objets du modèle alors il y a une fleche en trop, celle qui va de la vu au modèle, non ? |
|||
|
|
00
|
|
|
#6 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
En effet, je suis assez d'accord avec toi. La vue ne devrait pas invoquer des méthodes du modèle.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Inscription : mai 2005 Messages : 657 ![]() |
Salut,
Selon moi, la vue pourrait consulter les données du modèle, mais la modification serait reservée au contrôleur. Mais pour les frameworks web, la vue est souvent reléguée au rang de simple moteur de template, et c'est le contrôleur qui se charge d'instancier les modèles. Par exemple, dans le cas typique où on veut afficher des articles d'une catégorie, le contrôleur va : - Récuperer (et filtrer) la catégorie (typiquement passée en GET) - Trouver tout les articles de cette catégorie (fetchAll) - Passer un tableau d'articles à la vue On peut remarquer que la vue utilise bien le modèle puisqu'elle va récuperer le titre, le contenu, etc. mais le modèle a déjà été instancié par le contrôleur.
__________________
Toute la documentation Ruby on Rails : gotapi.com/rubyrails Mes articles : > HAML : langage de template pour Ruby on Rails |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2003 Messages : 17 ![]() |
d'accord, donc ce n'est pas contraire au modèle, et dans mon cas je pense que pour les données statiques sans test nécéssaire, la vue dialoguera avec le modèle et pour tous ce qui vient de l'utilisateur ce sera le contrôleur qui agira.
Merci pour vos réponses. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com