我是Yii2的新人,
当我开始创建一个网站时,我发现你可以在这样的配置中设置ErrorAction
'errorHandler' => [
'errorAction' => 'site/error',
],
Run Code Online (Sandbox Code Playgroud)
使用布局/ main.php布局的错误.当访客访问位于"view/site"中的页面时,使用了该布局.但是当用户登录视图页面时,位于"view/band"的不同文件夹中,布局变得完全不同并使用"layout/BandLayout".我知道你可以在控制器中动态更改布局,就像在BandController中一样
public $layout ='BandLayout';
Run Code Online (Sandbox Code Playgroud)
这将改变'view/band'中的整个布局.但是当出现像'404'这样的错误时,布局仍然使用layout/main.php中的布局.我已经做了一些搜索但是在模块中使用init()的解决方案.由于我没有学习模块,如何在控制器中设置错误布局的布局?
谢谢
你应该改变布局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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3818 次 |
| 最近记录: |