Обычная страница вывода ошибок Yii не только хороша в разработке, но и приемлема для уже развернутых проектов, если `YII_DEBUG` выключена в начальном загрузочном скрипте `index.php`. Но иногда хочется изменить внешний вид страницы с ошибками, чтобы лучше приспособить ее под свой проект.
Самый легкий способ создать свою страницу для отображения ошибок - использовать свое действие (action) для рендеринга сообщений об ошибке.
Сначала нужно дать приложению понять, что вы хотите использовать свое действие для обработки ошибок. Для этого нужно сконфигурировать компонент `errorHandler` в конфигурационном файле приложения:
```php
// ...
'components'=>[
// ...
'errorHandler'=>[
'errorAction'=>'site/error',
],
]
```
С вышеуказанной конфигурацией, если происходит ошибка, Yii запустит действие `error` контроллера `site`. Это действие запрашивает у компонента `errorHandler`, было ли выброшено исключение, и, если да, отображает соответствующий вид, передавая ему объект исключения в качестве параметра.
После создания `action` нужно создать соответствующий вид, который и будет отображать информацию об исключении. Объект исключения, передаваемый в вид, имеет
следующие свойства:
-`statusCode`: HTTP статус (например, 403, 500). Доступен только для [[yii\web\HttpException|HTTP exceptions]].
-`code`: код исключения.
-`message`: сообщение об ошибке.
-`file`: имя файла PHP скрипта, в котором произошла ошибка.
-`line`: номер строки в коде, где произошла ошибка.
-`trace`: стэк вызовов, приведших к ошибке.
Рендеринг ошибок без создания отдельного действия
-------------------------------------------------
Вместо создания отдельного действия внутри контроллера Site, вы можете просто указать Yii какой класс использовать для обработки ошибок:
```php
publicfunctionactions()
{
return[
'error'=>[
'class'=>'yii\web\ErrorAction',
],
];
}
```
После задания вышеуказанной связки ошибки с классом обработчиком, создайте вид `views/site/error.php`, который будет использоваться автоматически.
Виду передаются три параметра:
-`$name`: название ошибки
-`$message`: сообщение об ошибке
-`$exception`: обрабатываемое исключение
Объект `$exception` имеет те же свойства, которые были указаны ранее.