我尝试在模块actionError
中编写我自己的DefaultController
,只是为了呈现错误页面(仅用于测试的HTML),它也只是显示空白页面而不是显示错误页面。
我在下面做正确的方法吗?仅当我尝试访问模块路径中的不存在页面时,它才会显示空白页。
在我的模块类中,我在errorHandler
函数中配置了init()
个组件,如下所示:
public function init()
{
parent::init();
// initialize the module with the configuration loaded from config.php
\Yii::configure($this, require(__DIR__ . '/config.php'));
\Yii::$app->setComponents([
'errorHandler' => [
'class' => 'yii\web\ErrorHandler',
'errorAction' => 'studconsult/default/error',
] // set error action route - this to be error action in DefaultController
]);
}
在我的DefaultController
课程中,我的代码如下:
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
];
}
答案 0 :(得分:10)
你应该简单地使用它:
public function init()
{
parent::init();
Yii::$app->errorHandler->errorAction = 'studconsult/default/error';
}
以前的答案不太好,因为它会重置组件。
答案 1 :(得分:3)
似乎setComponents仅替换现有的那些组件。我想在你的app配置中没有这样的组件。我找到的最简单的路线是创建并注册它!
public function init()
{
parent::init();
// initialize the module with the configuration loaded from config.php
\Yii::configure($this, require(__DIR__ . '/config.php'));
//override default error handler
$handler = new \yii\web\ErrorHandler(['errorAction' => 'studconsult/default/error']);
Yii::$app->set('errorHandler', $handler);
$handler->register();
}