Bonjour à tous,
Je viens de commencer une petit appli modulaire.
J'ai fond la partie "default" et l' "admin".
Voici mon application.ini :J'ai un helper d'action qui gere les modules :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 resources.modules[] = default.resources.layout.layout = default resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" admin.resources.layout.layout = admin resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"Jusque là, tout marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class Qda_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract { public function preDispatch() { $bootstrap = $this->getActionController()->getInvokeArg('bootstrap'); $config = $bootstrap->getOptions(); $moduleName = $this->getRequest()->getModuleName(); if (isset($config[$moduleName]['resources']['layout']['layout'])) { $layoutScript = $config[$moduleName]['resources']['layout']['layout']; $this->getActionController() ->getHelper('layout') ->setLayout($layoutScript); } /* if (isset($config[$moduleName]['resources']['layout']['layoutPath'])) { $layoutPath = $config[$moduleName]['resources']['layout']['layoutPath']; $moduleDir = Zend_Controller_Front::getInstance()->getModuleDirectory(); Zend_Layout::getMvcInstance()->setLayoutPath( $moduleDir. DIRECTORY_SEPARATOR .$layoutPath ); }*/ } }
Mais j'aimerai bien avoir un layout PAR module. J'ai donc essayer de jouer avec resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
.mais si je fais :Le bootStrap ne trouve plus le layout de l'admin : Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "layout" not found' in.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 default.resources.layout.layout = default default.resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts" admin.resources.layout.layout = admin admin.resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
Comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 protected function _initLayoutHelper() { $this->bootstrap('frontController'); $layout = Zend_Controller_Action_HelperBroker::addHelper( new Qda_Controller_Action_Helper_LayoutLoader()); } function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headTitle()->setSeparator(' - '); $view->headTitle('titre?'); }
Merci à tous
Fabrice
Partager