Je suis sur le point de faire un site Web PHP en utilisant le modèle MVC. Je n'utilise pas de framework car le site est assez simple et je sens que cela me donnera une bonne opportunité d'en apprendre directement sur le pattern. J'ai quelques questions.MVC: Vues imbriquées et contrôleurs (pour un site Web)
Question 1: Comment dois-je organiser mes vues? Je pense avoir une vue de page qui aura l'en-tête et le pied de page, et qui permettra à une vue de contenu d'être imbriquée entre eux.
Question 2: Si j'ai 5 pages de contenu, devrais-je créer 5 vues différentes qui peuvent être utilisées comme contenu imbriqué dans la vue de page? Ou, devrais-je les faire tous étendre une vue abstraite appelée AbstractContent?
Question 3: Qu'en est-il des contrôleurs? Je pense qu'il devrait y avoir au moins un contrôleur principal. Mais alors, d'où vient la requête? Pour un autre contrôleur? Ou devrais-je simplement appeler la vue de la page et en rester là? Je pensais que les contrôleurs étaient censés gérer les entrées, éventuellement modifier un modèle, et sélectionner une vue. Mais que se passe-t-il si l'une des vues imbriquées dans la vue qu'un contrôleur appelle appelle une entrée supplémentaire à analyser?
Question 4: Les contrôleurs sont-ils autorisés à transmettre des paramètres dans la vue? Ou le contrôleur devrait-il simplement modifier le modèle, ce qui affectera alors la vue? Ou est le modèle uniquement pour l'accès DB et d'autres choses de ce genre?
Pour les vues imbriquées, je pense que mon problème est le suivant: que se passe-t-il si j'ai 4 vues très différentes - mais toutes partagent un élément commun (disons un panneau News). Je souhaite que le panneau Actualités soit imbriqué dans chacune des 4 vues principales. Le problème est que le panneau News a besoin d'obtenir des données quelque part. Et si le panneau de nouvelles a une fonction de recherche? Ensuite, il aurait aussi besoin d'un contrôleur, pour s'assurer que les paramètres de recherche sont gérés. Comment pourrais-je faire quelque chose comme ça? – Cam
@ "Edité pour commentaire" de Galen: Avec des vues imbriquées, l'idée est que les vues doivent être assez indépendantes - c'est-à-dire que je voudrais pouvoir les changer à tout moment. De cette façon cependant, j'ajoute un code inutile au contrôleur en haut, ce qui pourrait devenir très ennuyeux si j'ai trop de vues imbriquées. Qu'est-ce que tu penses? – Cam
Si vous avez une fonction de recherche, vous aurez besoin de code pour faire la recherche. Cela va devoir être dans le contrôleur, peu importe quoi. Si vous avez besoin de changer la disposition de la barre latérale, il suffit d'écraser sidebar.php avec le nouveau code. – Galen