张震宇 2015-10-18 12:48:56 4766次浏览 1条评论 0 0 0

第一次发文,解析的不好,莫怪

权限分类,主要是采取了yii2的权限能无限级继承的关系来实现的

最关键的其实就是使用addchild()方法来继承,从而实现分类。使用getChildren()方法来获取分类下的权限
角色分类也是如此。

//选择分类,以及创建分类下的权限,下面的$this->wxcode是站点名称,可不管
public function actionCreate()
    {
        
        $model = new PermissionForm();
        $permission = new \yii\rbac\Permission();
        if ($model->load(Yii::$app->request->post())) {
            $pName = $this->wxcode.'/'.$model->name;
            
            $hasp = $this->manager->getPermission($pName);//判断是否已经存在该权限
            if($hasp){
                $message = '该权限类型已经存在';
                return $this->showInfo($message);
                           
            }
            $permission->name = $pName;
            $permission->type = $model->type;
            $permission->data = $model->category;
            $permission->description = $model->description;
            $this->manager->add($permission);
            $spotSystem = $this->manager->getRole($this->rolePrefix.'system');
            if($spotSystem){
                $this->manager->addChild($spotSystem, $permission);//自动将新建权限赋予给站点管理员角色
            }
            if($model->category){
                $category = new \yii\rbac\Permission();
                $category->name = $model->category;
                $this->manager->addChild($category, $permission);//将创建的权限关联到所选择的分类上
               
            }
            return $this->redirect(['index','currentCategory'=>$model->category]);
        }
            $categories =  $this->manager->getChildren($this->rootPermission);//获取站点根分类下的所有的分类
            return $this->render('create', [
                'model' => $model,
                'categories' => $categories
            ]);
        
    }
您需要登录后才可以评论。登录 | 立即注册