Cтраница 404

Теперь создаем страницу 404 Not Found для панели управления. Yii2 не поддерживает отдельную от приложения обработку ошибок в модулях, обработчик ошибок является глобальным. Поэтому нужно перезаписать компонент errorHandler в классе модуля, установить его для приложения и зарегистрировать как обработчик ошибок.

<?php
namespace app\modules\admin;

use Yii;
use yii\web\ErrorHandler;

class Module extends \yii\base\Module {

    public $controllerNamespace = 'app\modules\admin\controllers';

    public function init() {
        parent::init();
        Yii::configure($this, [
            'components' => [
                'errorHandler' => [
                    'class' => ErrorHandler::class,
                    'errorAction' => 'admin/admin/error'
                ]
            ],
        ]);
        $handler = $this->get('errorHandler');
        Yii::$app->set('errorHandler', $handler);
        $handler->register();
    }
}Копировать

Добавляем метод actions() в класс контроллера AdminController:

<?php
namespace app\modules\admin\controllers;

use Yii;
use yii\web\Controller;

class AdminController extends Controller {
    public function beforeAction($action) {
        $session = Yii::$app->session;
        $session->open();
        if (!$session->has('auth_site_admin')) {
            $this->redirect('/admin/auth/login');
            return false;
        }
        return parent::beforeAction($action);
    }

    public function actions() {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
        ];
    }
}Копировать

И создаем view-шаблон:

<?php
/*
 * Файл modules/admin/views/admin/error.php
 */

/* @var $this yii\web\View */
/* @var $name string */
/* @var $message string */
/* @var $exception Exception */

use yii\helpers\Html;

$this->title = $name;
?>

<h1><?= Html::encode($this->title) ?></h1>
<div class="alert alert-danger">
    <?= nl2br(Html::encode($message)) ?>
</div>Копировать

Источник: Перейти
Комментарии (0):
Чтобы оставить свой комментарий, необходимо пройти аутентификацию