谁一开始就是大神?

Yii2权限管理,我写在了beforeAction里,但输出json时就出错了[2.0]

我写了个CommonController,其他Controller都继承这个类。
我在CommonController里写了输出JSON的方法

public function renderJson($params = array()) {
    Yii::$app->response->format = Response::FORMAT_JSON;
    return $params;
}

在CommonController的beforeAction写了验证

$isAjax = Yii::$app->request->getIsAjax();
//未登录
if (\Yii::$app->user->isGuest) {
    if ($isAjax) {
        return $this->renderJson(array(
            'status' => -1,
            'message' => '请先登录',
            'url' => Yii::$app->getHomeUrl()
        ));
    } else {
        return $this->goHome();
    }
}else{
    return parent::beforeAction($action);
}

这样,如果不是ajax请求就没问题,会跳到登录 ,但是如果是ajax请求。就会出错

PHP Notice 'yii\base\ErrorException' with message 'Trying to get property of non-object' 

求解答

beforeAction返回的应该是true或者false,要直接输出的话,应该还是返回false,通过response指定输出的内容,类似这样
试试将Response::FORMAT_JSON换成'json',如果OK的话,说明CommonController没有这条语句:use yii\web\Response;

赞(0) 打赏
未经允许不得转载:菜鸟之家 » Yii2权限管理,我写在了beforeAction里,但输出json时就出错了[2.0]

评论 抢沙发

登录

找回密码

注册