un layout pour chaque module svp.
Bonjour à tous,
Je viens de commencer une petit appli modulaire.
J'ai fond la partie "default" et l' "admin".
Voici mon application.ini :
Code:
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" |
J'ai un helper d'action qui gere les modules :
Code:
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
);
}*/
}
} |
Jusque là, tout marche.
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 :
Code:
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" |
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:
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?');
} |
Comment faire ?
Merci à tous
Fabrice