Вы можете использовать плагин, вот что я делаю:
<?php
class Mobile_Layout_Controller_Plugin_Layout extends Zend_Layout_Controller_Plugin_Layout
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
switch ($request->getModuleName()) {
case 'mobile': $this->_moduleChange('mobile');
}
}
protected function _moduleChange($moduleName) {
$this->getLayout()->setLayoutPath(
dirname(dirname(
$this->getLayout()->getLayoutPath()
))
. DIRECTORY_SEPARATOR . 'layouts/scripts/' . $moduleName
);
$this->getLayout()->setLayout($moduleName);
}
}
Я держу его в library/ProjectName/Layout/Controller/Plugin/Layout.php
.
В вашем Bootsrap вам нужно будет включить что-то вроде этого:
Zend_Layout::startMvc(
array(
'layoutPath' => self::$root . '/application/views/layouts/scripts',
'layout' => 'layout',
'pluginClass' => 'Mobile_Layout_Controller_Plugin_Layout'
)
);
На самом деле мне потребовалось некоторое время, чтобы разобраться с этим, но как только вы проработаете это, вы будете , поэтому намного счастливее.Надеюсь, что помогло:)