yii2:错误布局不起作用

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

我有一个具有 rbac 角色的网站,当我因无法访问某些页面而出现错误时,我会收到带有错误的白页。

使用这些代码进行布局,但不起作用:

我的站点控制:

 public function actionError()
{
    $exception = Yii::$app->errorHandler->exception;
    if ($exception !== null) {
        $this->layout = 'main';
        return $this->render('error', ['exception' => $exception]);
    }
}

我在站点控制器中有这个功能,我认为这个有问题:

 public function actions() {

    return [
        'error' => [
            'class' => 'yii\web\ErrorAction',

        ],
        'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',
            'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
        ],
    ];
}

main.php:

'errorHandler' => [
        'errorAction' => 'site/error',
    ],

错误。 php查看页面

<?php

use yii\helpers\Html;

$this->title = $name;
?>
<div class="site-error">

<h1><?= Html::encode($this->title) ?></h1>

<div class="alert alert-danger">
    <?= nl2br(Html::encode($message)) ?>
</div>

<p>
    The above error occurred while the Web server was processing your request.
</p>
<p>
    Please contact us if you think this is a server error. Thank you.
</p>

我用其他错误测试我的网络,我知道其他错误确实显示在我的视图布局中,但只是访问错误不在布局中

php yii2 yii2-advanced-app
1个回答
0
投票

在像您的站点控制器中的方法actionError()这样的设置中,永远不会调用,因为您在方法actions()中声明了错误,请注释以下行:

       'error' => [
            'class' => 'yii\web\ErrorAction',
        ],

在您的站点控制器中,您应该看到错误,查看您的视图,您必须传递名称和消息属性的值,如下所示:

public function actionError() {
    $exception = Yii::$app->errorHandler->exception;
    if ($exception !== null) {
        $this->layout = 'main';
        return $this->render('error', ['name' => $exception->getCode(), 'message' => $exception->getMessage()]);
    }
}

当然,站点/错误必须在浏览器中可用(根据需要在控制器中设置规则和文件系统上的路径)。

© www.soinside.com 2019 - 2024. All rights reserved.