Yii2
跳到导航
跳到搜索
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": "未登录"}
了