Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
922 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [MVC] Structure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MVC] Structure

n°1717033
bisol
Posté le 13-04-2008 à 22:07:25  profilanswer
 

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
mood
Publicité
Posté le 13-04-2008 à 22:07:25  profilanswer
 

n°1718179
shurik'n
Posté le 16-04-2008 à 00:26:58  profilanswer
 

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/

n°1720498
bisol
Posté le 20-04-2008 à 14:45:30  profilanswer
 

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

n°1720669
bisol
Posté le 20-04-2008 à 21:46:52  profilanswer
 

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 :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta name="description" content="<?= $description ?>" />
  6. <meta name="keywords" content="<?= $keywords ?>" />
  7. <link rel="stylesheet" type="text/css" href="<?= base_url(); ?>system/application/views/themes/default/css/style.css" />
  8. <script type="text/javascript" src="<?= base_url(); ?>system/application/views/themes/default/js/niftycube.js"></script>
  9. <title><?= $title ?></title>
  10. </head>
  11.     <div id="container">
  12.      <div id="top">
  13.          <?= $top ?>
  14.  </div>
  15.      <div id="col_gauche">
  16.          <?= $col_gauche ?>
  17.         </div>
  18.      <div id="col_droite">
  19.          <?= $col_droite ?>
  20.         </div>
  21.         <div id="footer">
  22.          <?= $footer ?>
  23.         </div>
  24.     </div>
  25. </html>


 
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 :P

n°1720752
skeye
Posté le 21-04-2008 à 09:08:38  profilanswer
 

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...


---------------
Can't buy what I want because it's free -
n°1721221
bisol
Posté le 21-04-2008 à 18:16:19  profilanswer
 

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...

n°1721233
skeye
Posté le 21-04-2008 à 18:40:29  profilanswer
 

bisol a écrit :


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 ?


 
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.


---------------
Can't buy what I want because it's free -
n°1721234
bisol
Posté le 21-04-2008 à 18:42:32  profilanswer
 

OK. Car je pensais partir comme ca :
 

Code :
  1. // Welcome Page
  2. function index() {
  3.  //Chargement des helpers
  4.  $this->load->helper('url');
  5.  //Passage de paramètres à la vue
  6.  $data = array(
  7.   'title' => 'XXXX - Rencontre c&eacute;libataire en Suisse Romande',
  8.   'description' => 'Site de rencontre pour la Suisse Romande. Enti&egrave;rement gratuit !',
  9.   'keywords' => 'site de rencontres, rencontre, rencontres, dating, speed dating, amour internet',
  10.   'top' => 'top',
  11.   'col_droite' => 'col_droite', //$this->load->view('navigation/nav_main','',true),
  12.   'col_gauche' => 'col_gauche',
  13.   'footer' => $this->load->view('common/footer','',true)
  14.  );
  15.  //Affichage de la vue (en passant les données)
  16.  $this->load->view('layout/main',$data);
  17. }


 
et à chaque fois charger mes fichier avec les load-> view...

n°1721269
skeye
Posté le 21-04-2008 à 19:22:24  profilanswer
 

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?:D


---------------
Can't buy what I want because it's free -
n°1721278
supermofo
Hello World !
Posté le 21-04-2008 à 19:40:38  profilanswer
 

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.
 

mood
Publicité
Posté le 21-04-2008 à 19:40:38  profilanswer
 

n°1721282
skeye
Posté le 21-04-2008 à 19:46:01  profilanswer
 

supermofo a écrit :

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.
 


 
tu réponds à quoi, là?:D


---------------
Can't buy what I want because it's free -
n°1721308
supermofo
Hello World !
Posté le 21-04-2008 à 20:39:01  profilanswer
 

Lol

 

La partie de ton message avec 1 controleur. Bon t'as pas tort mais ce n'est pas exact non plus.

 

Voila

Message cité 2 fois
Message édité par supermofo le 21-04-2008 à 20:40:28

---------------
Echange de 3000+ liens PR 3 -> 5, me pm urgent !
n°1721310
skeye
Posté le 21-04-2008 à 20:40:38  profilanswer
 

supermofo a écrit :

La partie de ton message avec 1 controlatérale :D.


m'enfin dans quelle langue tu parles?[:pingouino]


---------------
Can't buy what I want because it's free -
n°1721316
skeye
Posté le 21-04-2008 à 20:46:23  profilanswer
 

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.


Message édité par skeye le 21-04-2008 à 20:48:35

---------------
Can't buy what I want because it's free -
n°1721352
bisol
Posté le 21-04-2008 à 22:15:19  profilanswer
 

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 :P !
 
Merci

n°1721592
masterpsx
Aigloun foutougrafe
Posté le 22-04-2008 à 11:19:38  profilanswer
 

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.

n°1721602
skeye
Posté le 22-04-2008 à 11:22:33  profilanswer
 

masterpsx a écrit :


- 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.

 

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.

Message cité 1 fois
Message édité par skeye le 22-04-2008 à 11:22:38

---------------
Can't buy what I want because it's free -
n°1721929
shurik'n
Posté le 22-04-2008 à 15:24:47  profilanswer
 

skeye a écrit :


 
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.


 
 
C'est bien le job du controlleur de recuperer les parametres de la requete, sinon je vois pas ou tu peux le faire ailleurs ...

n°1721937
skeye
Posté le 22-04-2008 à 15:29:20  profilanswer
 

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.


---------------
Can't buy what I want because it's free -
n°1721947
soju
One shot !
Posté le 22-04-2008 à 15:37:48  profilanswer
 

+1
 
dans la pratique c'est le role du dispatcher
http://tempdocs.cakephp.org/index_files/droppedImage.png

n°1722314
supermofo
Hello World !
Posté le 22-04-2008 à 20:58:59  profilanswer
 

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.

 


Message édité par supermofo le 22-04-2008 à 21:19:44

---------------
Echange de 3000+ liens PR 3 -> 5, me pm urgent !
n°1722444
bisol
Posté le 22-04-2008 à 22:21:19  profilanswer
 

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 :)

n°1722524
bisol
Posté le 23-04-2008 à 00:54:01  profilanswer
 

J'ai un peu avancé... Je pense que ceci ne va pas vous aider énormèment mais sait-on jamais :)  
 

Code :
  1. function index() {
  2.  //Chargement des helpers
  3.  $this->load->helper('url');
  4.  $this->load->helper('form');
  5.  //Passage de paramètres à la vue
  6.  $data = array(
  7.   'title' => 'XXXX - Rencontre c&eacute;libataire en Suisse Romande',
  8.   'description' => 'Site de rencontre pour la Suisse Romande. Enti&egrave;rement gratuit !',
  9.   'keywords' => 'site de rencontres, rencontre, rencontres, dating, speed dating, amour internet',
  10.   'top' => 'top',
  11.   'col_gauche' => 'col_gauche',
  12.   'col_droite' => $this->load->view('layout/form_login', '', true),
  13.   'col_droite' => $this->load->view('layout/form_recherche_rapide', '', true),
  14.   'footer' => $this->load->view('common/footer','',true)
  15.  );
  16.  //Affichage de la vue (en passant les données)
  17.  $this->load->view('layout/main',$data);
  18. }


 
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 ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [MVC] Structure

 

Sujets relatifs
GUI : structure modulaire et composants reutilisables SIMPLEMENT[mySQL] structure de la base de données pour sondage multiples
PROBLEME AVEC STRUCTUREtaille de structure == somme éléments?
Model et Model DAO dans une application MVC[GTK] Probleme passage structure en argument signal
[MySql] Trigger structure conditionnelle [Résolu]site marchand : achat de structure?
Un moyen pratique d'accéder à une structure ?[SQLserver 2005] Copier la structure complete d'une base
Plus de sujets relatifs à : [MVC] Structure


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR