Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je souhaite mettre en place un plugin pour charger un layout en fonction du modules.
Mon arborescence est la suivante :
|--application | |--configs | | |--application.ini | | | |--modules | | |--admin | | | |--configs | | | | |--navigation.xml | | | | |--header_nav.xml | | | | |--footer_nav.xml | | | | | | | |--controllers | | | |--forms | | | |--languages | | | | |--en | | | | |--es | | | | |--fr | | | | | | | |--layouts | | | |--models | | | |--services | | | |--views | | | Bootstrap.php | | | | | |--default | | |--configs | | | |--navigation.xml | | | |--header_nav.xml | | | |--footer_nav.xml | | | | | |--controllers | | |--forms | | |--languages | | | |--en | | | |--es | | | |--fr | | | | | |--layouts | | |--models | | |--services | | |--views | | Bootstrap.php | | | |--Bootstarp.php | |--library |--Custom |--Controller |--Action |--Helper |--Plugin | |--ModuleLayout.php | |--View |--FlashMessenger.php
Mon fichier [/b]application.ini[/b]
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 phpsettings.date.timezone = "UTC" includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" ; Autoloader namespaces autoloadernamespaces.custom = "Custom_" resources.frontController.plugins.layout = "Custom_Controller_Plugin_ModuleBasedLayout" ;resources.frontController.plugins.Language = "Custom_Controller_Plugin_Language" ; Default controller resources.frontController.params.prefixDefaultModule = true resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.defaultControllerName = "Index" resources.frontController.defaultAction = "index" resources.frontController.defaultModule = "default" resources.frontController.throwErrors = false resources.frontController.throwExceptions = false resources.frontController.params.displayExceptions = 0 resources.modules[] = "" ; VIEW resources.view.doctype = "HTML5" resources.view.encoding = "utf-8" ; end VIEW ; LAYOUT resources.layout.layout = "layout" resources.layout.pluginClass = "Custom_Controller_Plugin_ModuleBasedLayout" ; end LAYOUT ; connexion à une base de données resources.db.adapter = "pdo_mysql" resources.db.params.charset = "UTF8" resources.db.params.host = "localhost" resources.db.params.username = "root" resources.db.params.password = "" resources.db.params.dbname = "mabase" resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss" resources.db.isDefaultTableAdapter = true ; place after resources.db section resources.session.save_path = APPLICATION_PATH "/data/sessions" resources.session.use_only_cookies = true resources.session.remember_me_seconds = 864000 resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable" resources.session.saveHandler.options.name = "session" resources.session.saveHandler.options.primary[] = "session_id" resources.session.saveHandler.options.primary[] = "save_path" resources.session.saveHandler.options.primary[] = "name" resources.session.saveHandler.options.primaryAssignment[] = "sessionId" resources.session.saveHandler.options.primaryAssignment[] = "sessionSavePath" resources.session.saveHandler.options.primaryAssignment[] = "sessionName" resources.session.saveHandler.options.modifiedColumn = "modified" resources.session.saveHandler.options.lifetimeColumn = "lifetime" resources.session.saveHandler.options.dataColumn = "session_data" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
Mon plugin ModuleBasedLayout.php
< ? php class Custom_Controller_Plugin_ModuleBasedLayout extends Zend_Layout_Controller_Plugin_Layout { public function preDispatch(Zend_Controller_Request_Abstract $request) { $this->getLayout()->setLayoutPath( Zend_Registry::get('config')->resources->frontController->moduleDirectory . DS . $request->getModuleName() . DS . 'layouts' ); } }
Mon Bootstrap.php
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{ protected function _initDb(){ $resource = $this->getPluginResource('db'); try { $db = $resource->getDbAdapter(); $db->getConnection(); Zend_Registry::set('db',$db); Zend_Db_Table_Abstract::setDefaultAdapter($db); }catch ( Exception $e) { exit( $e -> getMessage() ); } }
Mon Bootstrap.php de module ('default')
class Default_Bootstrap extends Zend_Application_Module_Bootstrap { protected $_moduleName = 'default'; protected function _initDoctype() { $view = new Zend_View(); $view->doctype('XHTML1_STRICT'); $view->setEncoding('UTF-8'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=utf-8'); $view->headMeta()->appendHttpEquiv('Content-Language', 'fr-FR'); //$view->headMeta()->appendHttpEquiv('Cache-Control', 'no-cache'); $view->headTitle()->setSeparator(' - ')->append('.:: My Company ::. (Default)'); $view->headLink()->appendStylesheet('/css/reset.css'); $view->headLink()->appendStylesheet('/css/typo.css'); $view->headLink()->appendStylesheet('/css/form.css'); $view->headLink()->appendStylesheet('/css/grid.css'); $view->headLink()->appendStylesheet('/css/layout.css'); $view->headLink()->appendStylesheet('/css/skin.css'); $view->headLink()->appendStylesheet('/css/papes.css'); $view->headLink()->appendStylesheet('/css/navigation.css'); $view->headLink()->appendStylesheet('/css/paginator.css'); $view->headLink()->appendStylesheet('/css/button.css'); $view->headScript()->appendFile('/js/jquery.js'); } protected function _initNavigation() { $options = new Custom_Controller_Plugin_ModuleBasedLayout(); $this->bootstrap('options'); $layout = $this->getResource('layout'); $view = $layout->getView(); $nav = new Zend_Config_Xml(APPLICATION_PATH . '/modules/' . $this->_moduleName . '/configs/navigation.xml','nav'); $navigation = new Zend_Navigation($nav); $header_nav = new Zend_Config_Xml(APPLICATION_PATH . '/modules/' . $this->_moduleName . '/configs/header_nav.xml','nav'); $navigation = new Zend_Navigation($header_nav); $footer_nav = new Zend_Config_Xml(APPLICATION_PATH . '/modules/' . $this->_moduleName . '/configs/footer_nav.xml','nav'); $navigation = new Zend_Navigation($footer_nav); $view->navigation($navigation); $view->header_nav($header_nav); $view->footer_nav($footer_nav); } }
Au niveau suivant :
protected function _initNavigation() { $options = new Custom_Controller_Plugin_ModuleBasedLayout(); $this->bootstrap('options'); $layout = $this->getResource('layout'); $view = $layout->getView();
je ne sais pas comment récupérer les ressources de mon layout.
Hors ligne