Structure [MVC] - PHP - Programmation
Marsh Posté le 16-04-2008 à 00:26:58
Si tu veux te mettre a developper en utisant la méthode MVC, le mieux est peut etre d'en comprendre le principe non ? Car la vu tes questions ca ne semble pas franchement etre le cas.
Pour te former je te conseille l excellent tutorial symfony sur un projet "réel", ca devrait t ouvrir les yeux quand à ton découpage (que tu dois penser par rapport a ton modèle de données et non par rapport a l'affichage souhaité dans tes pages ...) : http://www.symfony-project.org/askeet/1_0/
Marsh Posté le 20-04-2008 à 14:45:30
J'ai bien regarder ce tutoriel mais je sèche encore sur pas mal de choses...
J'ai l'impression que leur site est tout construit par petit module (formulaire de login, dernières questions) mais que rien n'est relié entre eux. J'entend par la, je ne vois pas qu'est ce qui va décider si sur une page il veut afficher la liste des dernières questions + le formulaire de login ?
Merci
Marsh Posté le 20-04-2008 à 21:46:52
Alors voici ce que j'ai réussi à faire pour l'instant...
- Découpage de mon site : Voici les différentes parties de mon site
Code :
|
Bien sur, tout ce qui est dans colonne gauche et droite est bien sûr dynamique (formulaire de login, champ de recherche....).
A votre avis, devrai-je donc :
1) Créer une vue qui contienne toute la colonne de gauche avec des if un peu partout vérifiant la provenance ? (puis même chose pour la droite)
2) Créer un contrôleur pour la colonne gauche ?
Je vous remercie d'avance pour votre aide...
Pas facile tout ca en tout cas
Marsh Posté le 21-04-2008 à 09:08:38
et c'est où que tu causes de mvc, là? Nan parce-que le principe c'est de séparer les données de la présentation, au grand minimum...et là je ne vois pas grand chose à part une maquette html...
Marsh Posté le 21-04-2008 à 18:16:19
Oui ceci est ma maquette de départ. Après, si cette maquette de départ est bonne, est de partir sur le codage des contrôleurs / modèles de col_gauche / col_droite etc...
Le problème, c'est que je ne vois pas trop comment commencer à coder tout ca justement. Un contrôleur pour la partie gauche ? Un contrôleur pour chaque petite partie ? Tout ca, sachant qu'il y a du contenu dynamique dedans (si la personne est inscrite, on affiche une box pour modifier son profil sinon on affiche la box de login) etc...
Marsh Posté le 21-04-2008 à 18:40:29
bisol a écrit : |
Ca n'a pas de sens, ça. Dans MVC, le controleur ne sait pas qu'il y a une partie gauche ou une partie droite.
Marsh Posté le 21-04-2008 à 18:42:32
OK. Car je pensais partir comme ca :
Code :
|
et à chaque fois charger mes fichier avec les load-> view...
Marsh Posté le 21-04-2008 à 19:22:24
bah si ça te chante...mais tu te rends compte que du code déconnecté de tout comme ça ça ne signifie pas grand chose pour nous?
Marsh Posté le 21-04-2008 à 19:40:38
Faux
Rien ne t'empeche d'avoir N-controlleur WEB. De meme pour la vue avec Ajax et Ci ou on livre des quasi clients lourds.
Tout depend de ce qu'on orchestre , cf ext pour application sur navigateur.
Marsh Posté le 21-04-2008 à 19:46:01
supermofo a écrit : Faux |
tu réponds à quoi, là?
Marsh Posté le 21-04-2008 à 20:39:01
Lol
La partie de ton message avec 1 controleur. Bon t'as pas tort mais ce n'est pas exact non plus.
Voila
Marsh Posté le 21-04-2008 à 20:40:38
supermofo a écrit : La partie de ton message avec 1 controlatérale . |
m'enfin dans quelle langue tu parles?
Marsh Posté le 21-04-2008 à 20:46:23
supermofo a écrit : La partie de ton message avec 1 controleur. |
Ok, plus clair après correction.
Et pour MVC tu as le contrôleur, la vue, et le modèle. Je ne parlais pas d'une implémentation particulière. Et encore moins du web où je n'ai jamais vu d'implémentation correspondant vraiment à du MVC.
Marsh Posté le 21-04-2008 à 22:15:19
Merci pour vos réponses... même si j'avoue être un peu perdu.
Je vais essayer de donner un peu + de détails...
Mon but est de faire un site style rencontre avec des gens qui peuvent s'inscrire et recherche d'autres personnes.... assez basique (bien-sur avec messagerie etc...) !
Donc pour l'instant, j'ai juste fait un contrôleur "Welcome" que j'ai chargé par défaut qui contient uniquement le code que je vous ai mis plus haut. Je sais ca ne fait pas beaucoup mais j'en suis au tout début et je veux partir sur de bonnes bases.... Donc d'après moi, ce contrôleur welcome, en fonction de la page à afficher (hors partie membre donc aide, conditions générales etc...) charge les différentes vues nécessaires. Malheureusement, ces vues peuvent être dynamique (si la personne s'est déjà connectée etc...). Et c'est avec tout ca que je sèche.
Voilà j'espère avoir donner assez de précisions, je vous en donnerai d'autres si nécessaire mais je sèche la !
Merci
Marsh Posté le 22-04-2008 à 11:19:38
Je crois que n'a pas trop compris ce qu'est le MVU, le but n'est pas d'avoir plusieurs controleurs ou je ne sais quoi, le principe pour faire simple c'est :
- Le modéle traite les données, c'est le coeur même du script
- La vue, disons que c'est le systéme de template
- Le controleur, c'est la 1er partie, celle qui récupére la requéte HTTP et détermine ce que le script vas faire/afficher.
Ces 3 parties doivent être bien séparées dans ton script, on utilise donc des class pour le mettre en place et faire la jonction.
Dans un script php classique, la page PHP contiendra souvent les 3, tu y trouveras le controleur qui sera sous la forme d'un switch() par exemple, le modéle qui sera les fonctions php et enfin la vue sous la forme du code HTML. L'interet de cette méthode est d'éviter les répétitions de code et surtout faciliter grandement les modifcations/améliorations. Par exemple si tu voulais modifié la façon dont tu fait tes requétes mysql, avec du classique tu vas devoir les retoucher toutes, dans un systéme MVU, tu as juste a retoucher la fonction dans ta class mysql.
Les puristes trouveront surement à redire dans mon explication mais en gros et simplifié, le principe du MVU avec PHP c'est ca.
Marsh Posté le 22-04-2008 à 11:22:33
masterpsx a écrit :
Les puristes trouveront surement à redire dans mon explication |
Effectivement. En MVC pur, tu mélanges la vue et le contrôleur, là. Le contrôleur ne devrait même pas savoir qu'il y a du http derrière, c'est le boulot de la vue de gérer l'interface utilisateur.
Marsh Posté le 22-04-2008 à 15:24:47
skeye a écrit : |
C'est bien le job du controlleur de recuperer les parametres de la requete, sinon je vois pas ou tu peux le faire ailleurs ...
Marsh Posté le 22-04-2008 à 15:29:20
shurik'n a écrit : C'est bien le job du controlleur de recuperer les parametres de la requete, sinon je vois pas ou tu peux le faire ailleurs ... |
Non, c'est le boulot de la vue. Je parle de MVC en général, pas de l'implémentation qui en est faite dans les frameworks php.
L'interaction avec l'utilisateur fait partie de la vue.
Et les requêtes http sont clairement de l'interaction avec l'utilisateur.
En traitant les requêtes http dans le contrôleur tu le lies à une implémentation particulière de la vue.
Marsh Posté le 22-04-2008 à 20:58:59
Heu on est toujours en asynchrone la ?
Il n'y a pas a ma connaissance de méthode pour utiliser le MVC sur le protocole HTTP. Je reste rigide juste pour l'exemple.
Tout le problème est la: le Web demande du léger pas du RoR.
Marsh Posté le 22-04-2008 à 22:21:19
Ok je comprend un peu mieux.
Donc en gros ce que j'ai commencé à faire m'a l'air juste. Il faut maintenant que je m'amuse à faire mes if dans mes vues...
Merci j'avance déjà bien
Marsh Posté le 23-04-2008 à 00:54:01
J'ai un peu avancé... Je pense que ceci ne va pas vous aider énormèment mais sait-on jamais
Code :
|
Apparement code igniter n'aime pas trop ceci et ne me charge que le fichier "recherche_rapide". Je pensais pouvoir orgnaniser les vues de cette facon mais me parait raté....
Suis-je donc en train d'aller dans la bonne direction ?
Marsh Posté le 13-04-2008 à 22:07:25
Salut à tous,
Je suis actuellement en train de vouloir changer de méthodes pour coder mes sites... Actuellement, je réinventais la roue à chaque fois...
Maintenant, je souhaite donc utiliser un framework qui m'aidera entre-autre à faire les choses proporement. Je me suis donc tourné vers Code Igniter qui m'a l'air simple entre autre...
Le problème que j'ai maintenant est : Comment bien structurer mes vues / controlleurs.
Je souhaite faire un site de rencontre et voici donc ce que je souhaite avoir :
- Une page d'accueil ou l'utilisateur pourra
> S'identifier via un formulaire
> Accéder à diverses pages (aide, conditions générales, ...)
> Voir les derniers membres inscris etc...
- Une partie membre ou l'utilisateur pourra faire des recherches etc.
Je pensais donc faire une page "index" qui contienne tous mes liens et fassent des includes du formulaire d'inscription etc... En tout cas, c'est comme ca que j'aurai fait jusque la. Maintenant, je vois bien que cette méthode n'est plus adaptées...
Je souhaiterai donc savoir comment structurer ? Une vue par bout de code (header, formulaire d'inscription, footer, ...) ? Un fichier "global" qui appellerai tous les autres ?
Le problème se pose surtout au niveau des conditions. Par exemple, si l'utilisateur est connecté je dois inclure la page 1 sinon la page 2...
Pour info, j'ai code igniter...
Je vous remercie d'avance pour votre aide !
Message édité par bisol le 13-04-2008 à 22:08:14