Que contiennent tes autres bootstrap?
Version imprimable
Que contiennent tes autres bootstrap?
Ils ne contiennent rien.
En fait, plus je lis la doc, les forums, les blogs, etc. sur le net, plus je me demande si l'implémentation que j'essaie de faire est la bonne. Il semblerai que pour faire des chargements spécifiques, les plugins seraient plus appropriés, quitte à dégager mes bootstrap de modules.
A ton avis?
Les plugins sont pratiques mais gourmand en ressource.
En fait pour la gestion des layouts je pratique une autre methode.
Déja pour moi, chaque module possède une partie admin, j'ai bien un module admin, mais celui-ci va rediriger les requetes d'admin vers les autres modules si il ne les possede pas.
J'ai créé un gestionnaire de themes car j'aime bien l'idée d'avoir le layout plus les fichiers images etc.... bref tout ce qui concerne le theme dans le même répertoire du coup public....
Je détecte si l'url commence par 'admin' je colle le layout 'admin' sinon j'utilise celui de mon theme.....
En gros c'est comme ça que je fait.
Si ça t'interresse, je peux t'expliquer plus en detail mais ce soir tard ou demain car là je dois partir.
Oui, comme je découvre Zend plus en profondeur, toutes les possibilités d'implémentation m’intéressent.
Pour le moment, j'ai fait comme ça, et ça fonctionne (mais je trouve ça cochon) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class Plugins_Layout extends Zend_Controller_Plugin_Abstract { public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { if ('default' == $request->getModuleName()) { Zend_Layout::startMvc()->setInflectorTarget(APPLICATION_PATH . '/modules/default/views/scripts/layout.:suffix');; } else if ('admin' == $request->getModuleName()) { Zend_Layout::startMvc()->setInflectorTarget(APPLICATION_PATH . '/modules/admin/views/scripts/layout.:suffix');; } // Change layout //Zend_Layout::getMvcInstance()->setLayout('layout'); } }
Dans ce cas précis j'aurais pas fait un plugin juste pour ça.
Je pense que le mieux est d'etendre tes classes de controlleur et de définir ce parametre dans ton controlleur abstract:
L'avantage ici est:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 // Classe abstraite qui etend Zend_Controller_Action abstract class My_Controller extends Zend_Controller_Action { public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array()) { parent::__construct($request, $response, $invokeArgs); $module = $request->getModuleName(); $this->_helper->layout->setInflectorTarget(APPLICATION_PATH . "/modules/{$module}/views/scripts/layout.:suffix"); } } // Exemple de classe de controlleur pour le module admin class Admin_IndexController extends My_Controller { /** Tes methodes **/ }
1 - tu économise les ressources en ne faisant pas de plugin
2 - Dans cette classe abstraite, tu peux créer des méthodes communes à tout tes controlleurs
Effectivement, ça me paraît plus propre, je vais regarder de ce côté là.
Je m'attaque à ce petit chantier de conception, et je reviens sur ce post (l'experience du framework me laisse penser que ce sera assez vite ^^)