如何为特定控制器正确设置错误处理程序操作?

问题描述 投票:0回答:1

为了满足我的应用程序的需要,我有一个需要位于单独的错误处理程序上的控制器。为此,我在控制器的 init 方法中设置了错误处理程序

Yii:$app->errorHandler->errorAction = 'controller/action'
。 我触发了一个异常,它被捕获,但默认错误处理程序。在我的 web.php 中,我有这样配置的全局错误处理程序。

'errorHandler' => ['errorAction' => 'some_other_controller/some_action' ]

我不知道为什么我的错误操作没有被触发。

php yii2
1个回答
0
投票

控制器的 init() 方法在调用操作之前执行。如果 init() 方法中抛出异常,它将被默认错误处理程序捕获。考虑将错误处理逻辑移至不同的方法或操作,或者您可以尝试使用模块的错误处理程序覆盖应用程序的错误处理程序。在您的模块配置中,设置错误处理程序:

/** @var ErrorHandler $handler */
$handler = $this->get('errorHandler');
Yii::$app->set('errorHandler', $handler);
$handler->register();
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.