Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
bonjour ,
je suis entrain ce créer un petit blog, divisé en deux partie Site et Admin. j'ai créer deux modules site et admin , le module par defaut est site :
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.defaultModule = "site"
j'ai activé Layout en utilisant l'outil en ligne de commmande :
>zf enable layout
.
bien creé :
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
et bien fonctionnel .
mais je voudrais creer autre layout pour le module Admin . y a t-il un moyen pour ça ?
merci d'avance pour vos réponses .
Dernière modification par younesD (22-11-2010 08:51:35)
Hors ligne
Bonjour,
Il te faut créer un deuxième layout "layout-2" dans le répertoire ad-hoc et spécifier dans ton controller que tu souhaite utiliser ce layout-2:
$this->_helper->layout->setLayout('layout-2');
Dernière modification par jfvole (22-11-2010 08:19:47)
Hors ligne
merci jfvole
Hors ligne
ou bien tu créer un helper qui te permettra de définir un layout qui se chargera quand le module sera admin.
voici comment je procède.
class App_Controller_Plugin_Layout extends Zend_Controller_Plugin_Abstract { public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { if('admin' != $request->getModuleName()) { return; } else { $layout = Zend_Layout::getMvcInstance(); $layout->setLayout('layout-2'); $view = $layout->getView(); $view->headTitle()->setSeparator(' - ') ->headTitle('Administration'); } } }
Et dans ton bootstrap tu peux injecter le plugin dans le controller
protected function _initControllerPlugin() { $fc = Zend_Controller_Front::getInstance(); $fc->registerPlugin(new App_Controller_Plugin_Layout()); }
Cela t'évite de repeter le code jfole dans chaque controller du module admin. principe du DRY
Hors ligne
En testant un peu avec un nouveau projet une autre solution existe.
un layout.phtml par module (modules - MyModule - Views - Scripts - Layout.phtml).
Et on n'en déclare pas dans layouts - scripts
Le framework cherche dans layouts scripts et ensuite dans le module, ce qui permet d'avoir une version par module. ou d'avoir un layout (ou un partial) global.
Dommage que la recherche ne soit pas inverse se qui permettrais un layout global et un layout spécialisé pour les modules si besoin...
Jean François
Hors ligne
Sympa ! Merci pour l'astuce.
Franck.
Hors ligne
Pages: 1