Bonjour,
Je suis en train de coder un site que j'essaie de faire en objet / MVC (sans framework) histoire d'avoir une architecture un peu organisée et je suis confronté à un souci pour lequel je n'arrive pas à trouver la meilleure solution.
Ma page principale doit afficher environ 50 éléments dont l'architecture est identique (une photo, du texte, des liens, des outils de mise en favori, like, recommandation) mais dont les données varient.
Du coup, je serai tenté de faire de la façon suivante :
- une vue pour l'architecture de ma page principale, par exemple :
- une vue pour un élément, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // ouverture div <div> <h1>page principale</h1> // fermeture div </div>
Au niveau du contrôleur de ma page principale, je serai tenté de faire la chose suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <div> <h1><?php echo $element->titre;?></h1> <img src="<?php echo $element->photo;?>"> <a href=<?php echo $element->lien1;?><?php echo $element->textlien1;?></a> <a href=<?php echo $element->lien2;?><?php echo $element->textlien2;?></a> <a href=<?php echo $element->lien3;?><?php echo $element->textlien3;?></a> </div>
mais ce n'est pas la bonne façon de faire car :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class Principale{ function __construct(){ // code pour récupération de éléments à afficher // affichage foreach($elements as $element){ require('vue_element.php'); } } require('vue_principale.php'); }
1. le code html de ma vue principale s'affiche après les éléments
2. si je place le require('vue_principale.php') avant le foreach, les éléments s'afficheront après la fermeture du div de la page principale, alors que je voudrais qu'ils s'affichent entre les balises div de la page principale.
Bref, je suis un peu perdu...
J'ai également pensé à faire :
1. une méthode d'affichage pour les éléments
2. entre les balises de div dans la vue principale, faire une boucle sur les éléments à afficher et pour chaque éléments faire $element->afficher();
Mais cette solution m'apparaît moins "MVC" du fait d'une boucle et d'un appel de méthode dans une vue...
L'un de vous pourrait-il m'aiguiller sur la bonne méthode ?
Merci de votre aide !
Partager