Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je dispose d'un site en MVC de tout ce qui y a de classique, avec l'arborescence suivante :
/ -- application/ ---- admin/ ------ IndexController.php ------ NewsController.php ------ ... ---- default/ ------ IndexController.php ------ ... -- view/ ---- admin/ ------ index/ -------- index.phtml -------- afficher.phtml ------ news/ -------- index.phtml ------ ... ---- default/ ------ index/ -------- index.phtml ------ ...
Le système MVC est implanté et tout est fonctionnel. Je cherche à intégrer un système de plugins (rien à voir avec les plugins MVC) permettant d'ajouter des fonctionnalités sur le site. Pour ce faire, j'essaye de faire en sorte que l'ajout d'un plugin puisse modifier le site de façon totalement dynamique : ajout d'un formulaire d'ajout/édition dans le backoffice, ajout des pages correspondantes sur le site public, etc., sans ajouter manuellement du code dans le site de base.
Là où je coince, c'est pour "fusionner" les contrôleurs du plugin avec ceux déjà existant du site pour un même module.
Par exemple, pour un plugin "article", je veux créer l'arborescence suivante (calquée sur celle du site) :
-- plugins/ ---- article/ ------ application/ -------- admin/ ---------- ArticleController.php -------- default/ ---------- ArticleController.php ------ view/ -------- admin/ ---------- article/ ------------ index.phtml -------- default/ ---------- article/ ------------ index.phtml ...
Mon but est de mettre plusieurs chemins de contrôleurs pour les modules "admin" et "default". J'ai regardé du côté de Zend_Controller_Front dans le bootstrap mais c'est visiblement impossible de faire de la sorte :
$this->_front->setControllerDirectory(array( 'default' => array( $this->_root . '/application/default', $this->_root . '/plugins/article/application/default' ), 'admin' => array( $this->_root . '/application/admin', $this->_root . '/plugins/article/application/admin' ) ));
Une idée ?
Merci
Dernière modification par ALkyD (10-01-2012 17:27:07)
Hors ligne
Essai en rajoutant ceci avant:
$this->_front->setBaseUrl('/');
Hors ligne
J'ai fini par trouver une solution assez viable : j'ai créé une classe qui hérite du dispatcher Zend_Controller_Dispatcher_Standard, en surchargeant les méthodes isDispatchable et loadClass, qui s'occupent de gérer les chemins et les classes des contrôleurs.
Hors ligne