Bonjour,
Je me suis lancé dans le développement d'une application MVC en php pour accélerer mes dev web.
Je vais vous expliquer ma vision de l'appli, ma manière de penser pour ensuite vous exposer mon problème (oui sinon je posterai pas ).
url appelée : domaine.com/nomcontroleur/nomaction
controleur frontal : index.php
controleur (appelé par le frontal) : nomcontroleur.class.php
abstract class controleur { protected $modele; protected $vue; public function __construct($db) { $this->db = $db; } public function getVue() { return $this->vue; } public function getModele() { return $this->modele; } abstract function events($args); }
class events extends controleur { private $result; public function __construct() { $this->result['page'] = 'event-article'; } public function read($args) { $this->eventsDao = new eventsDao($this->db); $this->result['events'] = $this->eventsDao->getEvents(); $this->modele = $this->result; $this->vue = 'tpl.events.html'; } }
Le controleur définit le modèle et la vue. Enfin je charge mes templates smarty. Aucun problème.
Mais voilà, ma page (http://micromediateam.com/proto/) contient des éléments récurrents. Exemple : une boite sponsors, une boite news.
Or, j'ai plus ou moins découpé mes controleurs par rapport aux métiers :
un controleur news (pour afficher les news, ajouteru une news, etc.).
un controleur events
etc.
Donc finalement, il faudrait que j'appelle plusieurs controleurs pour une requête donnée.
exemple : domaine.com/events (http://micromediateam.com/proto/event.php)
doit appelé le controleur events, le controleur head sponsor, le controleur sponsors, supporters, etc.
Ma première idée fût de rajouter dans chacun de mes controleurs l'accès aux données des modules demandées. Mais du coup, mes contrôleurs n'ont plus vraiment de sens. On retombe sur une page => un controleur qui appelle les modèles.
Comment procéder ?
Faut-il que selon l'url demandée (events/read), je traite cette chaine. Dans, un fichier externe je stocke les rubriques à afficher pour chacune des pages. Et j'appelle en conséquence les controleurs ?
Exemple (très simpliste) :
$events = array('hsponsors', 'sponsor', 'supporter'); foreach($events as $controleur) { $c = new $controleur(); }
Enfin, par extension, des modules comme l'identification, gestion d'un panier doivent-ils être gérés par un controleur spécifique ?
J'ai besoin d'y voir plus clair !
Merci d'avoir lu mon problème d'une limpidité digne de la mer méditérannée.