我是Yii2的新人,
当我开始创建网站时,我发现您可以在此配置中设置ErrorAction
'errorHandler' => [
'errorAction' => 'site/error',
],
使用layout / main.php布局的错误。当访客访问位于' view / site'中的页面时,使用该布局。但是当用户登录视图页面时,会找到不同的文件夹,即“查看/频段”。布局变得完全不同,使用' layout / BandLayout'。我知道你可以在控制器中动态更改布局,就像在BandController
中一样public $layout ='BandLayout';
这将改变' view / band'中的整个布局。但是当出现类似“404'”的错误时布局仍然使用layout / main.php中的布局。我已经做了一些搜索但是在模块中使用init()的解决方案。由于我没有学习模块,如何在控制器中设置错误布局的布局?
谢谢
答案 0 :(得分:7)
您应该更改SiteController
中的布局,您可以使用beforeAction
,例如:
public function beforeAction($action)
{
if (parent::beforeAction($action)) {
// change layout for error action
if ($action->id=='error')
$this->layout ='BandLayout';
return true;
} else {
return false;
}
}