function actions(){
        return ArrayHelper::merge(parent::actions(), [
            'checkCourseAccess' =>  'common\actions\CheckCourseAccessAction'
        ]);
    }
    function behaviors() {
        return ArrayHelper::merge(parent::actions(),[
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'matchCallback' => function($rule,$action){
                            if(!$this->getUserId()){
                                return false;
                            }
                            return true;
                        }
                    ],
                ],
            ],
        ]);
    }
behaviors函数使用了权限检测: AccessControl::className(),
那么前面必须先引入,也就是:
function actions(){
        return ArrayHelper::merge(parent::actions(), [
            'checkCourseAccess' =>  'common\actions\CheckCourseAccessAction'
        ]);
    }

否则会报错:
Missing required parameter "id" when instantiating "common\actions\CheckCourseAccessAction".

 

相关文章: