针对特定控制器的Yii框架自定义403处理

针对特定控制器的Yii框架自定义403处理,yii,Yii,我有一个要求,检查当前登录用户是否是一组操作的付费成员。如果用户不是付费会员,则必须将其发送到take membership页面。下面是代码。在控制器中(Yii框架) 现在,hasPayed()函数为未付款的成员返回false,目前用户被重定向到403异常 我想将403例外页面自定义为“获取会员资格”页面。有办法吗?因此,从该特定控制器\操作引发的所有异常都将发送到take membership页面,rest 403异常保持不变?尝试使用来自的deniedCallback public func

我有一个要求,检查当前登录用户是否是一组操作的付费成员。如果用户不是付费会员,则必须将其发送到take membership页面。下面是代码。在控制器中(Yii框架)

现在,
hasPayed()
函数为未付款的成员返回false,目前用户被重定向到403异常


我想将403例外页面自定义为“获取会员资格”页面。有办法吗?因此,从该特定
控制器\操作引发的所有异常都将发送到take membership页面,rest 403异常保持不变?

尝试使用来自的deniedCallback

public function accessRules()
{  return array(

        array('allow', 
            'actions'=>array('enroll','index','admin','suggesttags'),
            'users'=>array('@'),
            ),
        array('allow', 
            'actions'=>array('view', 'read'),
            'users'=>array(Yii::app()->user->name),
            'expression' => 'Yii::app()->controller->hasPaied()'
            ),
// optional, the denied method callback name, that will be called once the
// access is denied, instead of showing the customized error message. It can also be
// a valid PHP callback, including class method name (array(ClassName/Object, MethodName)),
// or anonymous function (PHP 5.3.0+). The function/method signature should be as follows:
// function foo($user, $rule) { ... }
// where $user is the current application user object and $rule is this access rule.
// This option is available since version 1.1.11.
'deniedCallback'=>'redirectToDeniedMethod',