Bonjour à tous,

Je viens de commencer une petit appli modulaire.
J'ai fond la partie "default" et l' "admin".

Voici mon application.ini :
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"
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
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 : 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"
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
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