zf2 中不同模块的不同布局
Different layout for different module in zf2
如何为不同的模块设置不同的布局。我已将布局用于操作,即
public function indexAction(){
$this->layout()->setTemplate('layout/manager');
return new ViewModel();
}
它工作正常。但我希望它默认为这个模块。所以我在构造中使用它。但是这种布局在构造中不起作用。谁能告诉我如何在没有控制器操作的情况下为这个模块使用这个布局。
提前致谢。
有一个模块,每个模块都有不同的布局。
https://github.com/EvanDotPro/EdpModuleLayouts
非常易于使用,只需按照自述文件说明进行操作
假设您有一个名为 Administration 的模块
步骤 1 在 Module.php 文件中添加以下行:
特别注意第一个函数中的onBootstrap函数,添加必要的行而不是覆盖它。
module/Administration/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/Administration/config/module.config.php
'view_manager' => array(
'template_map' => array(
'layout/administration' => __DIR__ . '/../view/layout/layout.phtml',
),
'template_path_stack' => array(
'administration' => __DIR__ . '/../view',
),
),
只需要在您要区分的模块中进行这些更改。
如何为不同的模块设置不同的布局。我已将布局用于操作,即
public function indexAction(){
$this->layout()->setTemplate('layout/manager');
return new ViewModel();
}
它工作正常。但我希望它默认为这个模块。所以我在构造中使用它。但是这种布局在构造中不起作用。谁能告诉我如何在没有控制器操作的情况下为这个模块使用这个布局。 提前致谢。
有一个模块,每个模块都有不同的布局。
https://github.com/EvanDotPro/EdpModuleLayouts
非常易于使用,只需按照自述文件说明进行操作
假设您有一个名为 Administration 的模块
步骤 1 在 Module.php 文件中添加以下行:
特别注意第一个函数中的onBootstrap函数,添加必要的行而不是覆盖它。
module/Administration/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/Administration/config/module.config.php
'view_manager' => array(
'template_map' => array(
'layout/administration' => __DIR__ . '/../view/layout/layout.phtml',
),
'template_path_stack' => array(
'administration' => __DIR__ . '/../view',
),
),
只需要在您要区分的模块中进行这些更改。