< блоковая цитата>
Код: Выделить всё
@yii/views/errorHandler/error.php: used when errors should be displayed WITHOUT call stack information. When YII_DEBUG is false, this is the only error view to be displayed.
@yii/views/errorHandler/exception.php: used when errors should be displayed WITH call stack information.
Дальнейшее предложение по подходу:
Код: Выделить всё
return [
'components' => [
'errorHandler' => [
'errorAction' => 'site/error',
],
]
];
В моем SiteController есть код:
Код: Выделить всё
public function actionError()
{
error_log('actionError happens!');
$exception = Yii::$app->errorHandler->exception;
if ($exception instanceof \yii\web\UnauthorizedHttpException) {
Yii::$app->response->statusCode = 401;
$data = new \stdClass();
$data->error = true;
$data->message = $exception->getMessage();
return json_encode($data);
}
$data = new \stdClass();
$data->error = true;
$data->message = 'An internal error occurred.';
return json_encode($data);
}
Почти всегда обо всех серьезных исключениях сообщается таким образом, например
Код: Выделить всё
Throwable... Undefined property: stdClass::$sal_tax
Cannot use object of type stdClass as array
Я бы предпочел свою собственную обработку ошибок - с возможной регистрацией ошибочной ситуации и выводом в технический формат (чтобы мое приложение на стороне браузера или мобильное приложение могло сделать с этим что-то значимое), но я не могу найти, как переопределить встроенную обработку исключений в этих более серьезных ситуациях. И они могут случиться — PHP не проверяет тип.
Подробнее здесь: https://stackoverflow.com/questions/791 ... o-enable-c