[php][mvc] php dans la vue

php dans la vue [php][mvc] - PHP - Programmation

Marsh Posté le 07-12-2011 à 10:16:12    

Bonjour,
 
Voilà je suis en DUT informatique (2ème année) & j'ai une question sur le modèle mvc.
J'ai séché les cours de prog' web à l'IUT donc j'ai dû apprendre ça y'a pas très longtemps, idem pour le modèle mvc (très récent).
 
Je ne sais pas si j'ai tout compris à ce modèle, certaines notions me semblent un peu floues malgré la lecture de plusieurs tutos.
 
 
Je suis en train de faire un site & j'aimerais faire une page d'administration où je peux gérer les membres (je pense que si le site marche, il y aura dans les ~1000 membres pour donner un ordre de grandeur).
J'ai pensé pour cela à faire une liste déroulante afin de sélectionner un membre et de lui appliquer ensuite des actions (modifier ses droits, le bannir, etc).
 
Mon problème vient de la liste déroulante car mes membres sont dans ma base de données.
 
Est-ce en accord avec le modèle mvc que d'insérer du code php dans la vue qui utilise les méthodes de ma classe Membre pour récupérer tous les membres de ma BDD puis qui, à l'aide d'une boucle (dans la vue) les affiches comme options de mon formulaire ?
 
 
Voilà, si vous avez besoin de + de précision ou si vous avez une meilleure idée que la liste déroulante, je suis preneur.
 
 
Merci :)
 
 
Edit : Voici mon code -
 
 
  <p>Gérer les membres</p>
  <form method="post" action="Gerer_Membre.php">
   <fieldset><legend>Administration</legend>
    <select name="pseudo">
     <?php
     require_once("Membre.php" );
     
     $tab = Membre::readAll();
     
     foreach ($tab as $membre)
      echo('<p><option value="' .$membre->getPseudo(). '">Pseudo : ' .$membre->getPseudo().  
      ' - Membre : ' .$membre->getNom(). ' ' .$membre->getPrenom(). '</option></p>');
     ?>
    </select>
     
    <p>Quelle action appliquer ?<br />
    <input type="radio" name="agir" value="banni" id="banni" checked="checked" /> <label for="banni">Bannir</label>
    <input type="radio" name="agir" value="supprimer" id="supprimer" /> <label for="supprimer">Supprimer</label>
    <input type="radio" name="agir" value="modo" id="modo" /> <label for="modo">Passer moderateur</label>
    <input type="radio" name="agir" value="membre" id="membre" /> <label for="membre">Passer membre</label></p>
   </fieldset>
   <div style="text-align:center;"><input type="reset" /> <input type="submit" name="valider" value="Valider" /></div>
  </form>


Message édité par Ch0bits le 07-12-2011 à 12:15:59
Reply

Marsh Posté le 07-12-2011 à 10:16:12   

Reply

Marsh Posté le 09-12-2011 à 21:18:21    

Pour respecter le MVC, il faut que ce soit le contrôleur qui interroge le model, puis il transmet les données à la vue.
 
Donc dans ton script, il faut que

Code :
  1. require_once("Membre.php" );
  2.      
  3. $tab = Membre::readAll();


soit dans ton contrôleur, puis il transmet le $tab à ta vue. Ton foreach qui construit la liste déroulante lui est bien placé.


---------------
Mon Feedback !
Reply

Marsh Posté le 13-12-2011 à 09:34:57    

C'est-à-dire ?
 
Par exemple je peux faire un script "Rendre_Membres.php" où j'appelle ma fonction Membre::readAll() & où je renvoie le tableaux dans la vue, script que j'appelle avec un include ?
 
À part comme ça j'vois pas trop comment faire sinon.
 
J'ai une 2ème question, est-ce gênant d'avoir plusieurs scripts que j'exécute suivant le formulaire que j'utilise ou il faut avoir 1 script qui gère tout ça & qui, suivant qui l'appelle, exécute telle ou telle action ?


Message édité par Ch0bits le 13-12-2011 à 09:35:26
Reply

Marsh Posté le 13-12-2011 à 09:59:10    

Tirkyth a écrit :

Pour respecter le MVC, il faut que ce soit le contrôleur qui interroge le model, puis il transmet les données à la vue.


Non [:pingouino] le controller instancie la bonne view, et la view se charge de sélectionner les données qu'elle veut.
 
Donc son truc est bon.

Reply

Marsh Posté le 13-12-2011 à 11:04:28    

ah good :D merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed