Bonjour à tous, je développe en ce moment un mini framework et j'aurais aimé savoir comment vous faites pour lier plusieurs controllers

Ex: récupérer les posts ET afficher les catégories : il y aurait besoin de 2 controllers / 2 Modèles sur une seule vue

Avant j'aurais récupérer les données dans le controller post mais je me dis que ce n'est pas son rôle...

J'ai aussi pensé à une petite architecture basée sur un MVC mais qui permettrai d'éviter ces problèmes mais je ne sais pas ce que ça vaut ;)

En gros un seul controller qui s'occupe de plusieurs modèles...

Merci d'avance!

7 réponses


arnich
Réponse acceptée

Dans une architecture mvc il n'est pas deconnant qu'un contrôleur appele plusieurs modèles.
Par exemple pour un blog, on peut avoir un controleur qui va récupérer 1 post est la liste des coms. Dans ce cas on va utiliser le model Post et le model Coment.

Je te conseil de lire ce tuto qui explique de A à Z comment créer son mini framework mvc php :
[http://bpesquet.developpez.com/tutoriels/php/evoluer-architecture-mvc/]

Faire un seul controller pour gérer toute l'application est loin d'être conseillé.
Si tu veux faire appel à un model qui n'est pas lié au controller courant, tu peux par exemple regarder et t'inspirer de la formation La POO en PHP, dans le chapitre 20, il parle justement de l'architecture MVC, Model View Controller et tu verras qu'il introduit justement un système, pour pouvoir utiliser également d'autres modèles et donc de récupérer des données de différentes tables depuis un même controller.

hugopb82
Auteur

Merci beaucoup pour vos liens, mais mon problème n'est pas que je ne sais pas faire appel à 2 modèles dans le même controller mais que je ne trouve pas ça propre... je voulais juste savoir si vous connaissiez une méthode pour tout bien séparer (que le controller post n'ait pas à récupérer les catégories).

Hugo

hugopb82
Auteur

Ok merci pour ta réponse!

fait toi plutot une function loadModel dans ton controller principal comme sa tu peut loader un model dans n'importe quel controller.

fait toi plutot une function loadModel dans ton controller principal comme sa tu peut loader un model dans n'importe quel controller.

Tu devrais lire les discussions des sujets du début jusqu'à la fin, ça te permettrait d'éviter de répéter ce qui a déja été proposé.
Surtout qu'il a dit par la suite, qu'il sait le faire.