Если бы мне пришлось иметь несколько макетов в зависимости от некоторых условий.
Я бы сделал макеты для каждой компании, прописал их в module.config.php
'view_manager' => array(
'template_path_stack' => array(
'module' => __DIR__ . '/../view/',
),
'template_map' => array(
'layout/company1' => __DIR__ . '/../view/layout/company1.phtml',
'layout/company2' => __DIR__ . '/../view/layout/company2.phtml',
)
),
Затем в gloabal.php или в тот же module.config.php добавил бы некоторые опции:
'companies_layouts' => array(
'IDofComapny1' => 'layout/company1',
'IDofComapny2' => 'layout/company2',
)
И, наконец, в контроллере сделал бы что-то вроде этого:
public function indexAction()
{
$sm = $this->getServiceLocator();
// Getting company identifier
$companyId = $this->params()->fromRoute( 'companyId' );
// do something
...
$this->layout( $sm->get('Config')['companies_layouts'][$comanyId] );
return new ViewModel();
}
Если вам просто нужно установить css в зависимости от некоторых условий, вы можете просто сделать это в файле представления:
switch( true ){
case some condition:
$css = 'file1.css';
break;
case some condition:
$css = 'file2.css';
break;
}
$this->headLink()->appendStylesheet( $css );
И в файле макета у вас должна быть следующая строка:
<head>
...
<?= $this->headLink() ?>
...
</head>
person
Roman
schedule
13.03.2014