如何为不同的模块设置不同的布局。我已经使用了行动的布局,即
public function indexAction(){
$this->layout()->setTemplate('layout/manager');
return new ViewModel();
}
工作正常。但我想要它默认为这个模块。所以我在构造中使用它。但是这种布局在构造中不起作用。任何人都可以告诉我如何在没有控制器操作的情况下将此布局用于此模块。 提前谢谢。
答案 0 :(得分:2)
假设您有一个名为Administration
的模块第1步在 Module.php 文件中添加以下行:
第一个函数中特别注意的是onBootstrap函数,添加必要的行而不是覆盖它。
<强>模块/行政/ Module.php 强>
public function onBootstrap($e) {
// Register a dispatch event
$app = $e->getParam('application');
$app->getEventManager()->attach('dispatch', array($this, 'setLayout'));
}
public function setLayout($e) {
$matches = $e->getRouteMatch();
$controller = $matches->getParam('controller');
if (false === strpos($controller, __NAMESPACE__)) {
// not a controller from this module
return;
}
// Set the layout template
$viewModel = $e->getViewModel();
if ($viewModel->getTemplate() === 'layout/layout') {
$viewModel->setTemplate('layout/administration');
}
}
第2步在 module.config.php 文件中添加以下行:
<强>模块/管理/配置/ module.config.php 强>
'view_manager' => array(
'template_map' => array(
'layout/administration' => __DIR__ . '/../view/layout/layout.phtml',
),
'template_path_stack' => array(
'administration' => __DIR__ . '/../view',
),
),
只有在您要区分的模块中才需要进行这些更改。
答案 1 :(得分:1)