怎么设置统一的错误处理页面 [ 2.0 版本 ]
比如
访问了控制器下不存在的方法,请求数据库中不存在的值,操作权限不够......
这个我想大概是自己定义一个错误页面,然后跳转过去,然而在每一个控制器里面做逻辑判断会不太麻烦了,有没有什么好的办法,求教。
共 1 个回答
-
定义一个控制器基类,所有的控制器都继承这个基类,除了包括登录和退出的类不用继承
这是我的后台控制器基类,权限还没有加上去,只有最基本的判断登录和404跳转,你可以参考参考namespace backend\controllers; use Yii; use yii\web\Controller; class BackendBaseController extends Controller { public $layout = '/notlayouts'; public function beforeAction($action) { if (empty(Yii::$app->user->getId())) { Yii::$app->controller->redirect(['/site/login']); return false; } //判断权限 return true; } public function actions() { return [ 'error' => [ 'class' => 'yii\web\ErrorAction', ], ]; } public function actionError() { $this->layout = '@backend/views/layouts/notlayouts.php'; if (\Yii::$app->exception !== null) { return $this->render('error', ['exception' => \Yii::$app->exception]); } } }
只要你在其他控制器不重写actionError()方法,404就会跳到基类设置的页面中
imkindu 觉得很赞
tw1996
注册时间:2016-03-13
最后登录:2020-03-25
在线时长:37小时2分
最后登录:2020-03-25
在线时长:37小时2分
- 粉丝3
- 金钱0
- 威望0
- 积分370