Yii2

来自YS的笔记
Yaosong讨论 | 贡献2019年8月23日 (五) 00:21的版本
跳到导航 跳到搜索


yii2自定义异常页面

框架中异常是由yii\web\ErrorHandler类处理,所以继承他并重写(renderException)就好了。


1. 创建类app\components\ErrorHandler

+<?php
+/**
+ * @link http://www.yiiframework.com/
+ * @copyright Copyright (c) 2008 Yii Software LLC
+ * @license http://www.yiiframework.com/license/
+ */
+
+namespace app\components;
+
+use Yii;
+use yii\base\ErrorException;
+use yii\base\Exception;
+use yii\web\ErrorHandler as BaseErrorHandler;
+use yii\helpers\VarDumper;
+use \yii\web\Response;
+
+class ErrorHandler extends BaseErrorHandler
+{
+    protected function renderException($exception)
+    {
+        if ($exception instanceof \yii\web\UnauthorizedHttpException) {
+            $response = new Response();
+            $response->format = Response::FORMAT_JSON;
+            $response->data = ["status"=>1001,"msg"=>"未登录"];
+            $response->send();
+            return;
+        }else{
+            return parent::renderException($exception);
+        }
+    }
+}

2. 修改config/main.php

     'components'=>[
+        'errorHandler'=>[
+            'errorAction' => 'site/error',
+            'class' => 'app\components\ErrorHandler',
+        ],
     ],


当抛出yii\web\UnauthorizedHttpException异常时,就会返回上面定义的{"status": 1001,"msg": "未登录"}