## 代碼
```
<?php
namespace app\agent\controller;
use think\Controller;
use think\Db;
class RbacController extends Controller
{
/**
* 角色授權提交
*/
public function authorizePost()
{
if ($this->request->isPost()) {
$roleId = $this->request->param("roleId", 0, 'intval');
if (!$roleId) {
$this->error("需要授權的角色不存在!");
}
if (is_array($this->request->param('menuId/a')) && count($this->request->param('menuId/a')) > 0) {
//先刪除后插入
Db::name("authAccess")->where(["role_id" => $roleId, 'type' => 'admin_url'])->delete();
foreach ($_POST['menuId'] as $menuId) {
$menu = Db::name("adminMenu")->where(["id" => $menuId])->field("app,controller,action")->find();
if ($menu) {
$app = $menu['app'];
$model = $menu['controller'];
$action = $menu['action'];
$name = strtolower("$app/$model/$action");
Db::name("authAccess")->insert(["role_id" => $roleId, "rule_name" => $name, 'type' => 'admin_url']);
}
}
$this->success("授權成功!");
} else {
//當沒有數據時,清除當前角色授權
Db::name("authAccess")->where(["role_id" => $roleId])->delete();
$this->error("沒有接收到數據,執行清除授權成功!");
}
}
}
}
```
- 附錄
- 邏輯與數據模型
- HTML約定-bootstrap
- HTML約定-LayUI
- 角色管理 role
- 數據表
- 列表
- 控制器
- 視圖
- 視圖-layui
- 角色添加
- 控制器
- 視圖
- 角色添加提交
- 控制器
- 驗證
- 角色修改
- 控制器
- 視圖
- 角色修改提交
- 控制器
- 角色刪除
- 控制器
- 權限設置
- 控制器
- 視圖
- 模型
- 權限設置提交
- 用戶 user
- 數據表
- 列表
- 控制器
- 視圖
- 模型
- 添加
- 控制器
- 視圖
- 添加提交
- 控制器
- 驗證器
- 編輯
- 控制器
- 視圖
- 編輯提交
- 控制器
- 驗證器
- 刪除
- 停用啟用
- 角色用戶中間表role_user
- 菜單管理
- 數據表
- 表格折疊列表
- 控制器
- 視圖
- 全部列表
- 控制器
- 視圖
- 填加
- 控制器
- 視圖
- 填加提交
- 控制器
- 驗證器
- 編輯
- 控制器
- 視圖
- 編輯提交
- 控制器
- 驗證器
- 刪除
- 控制器
- 視圖
- 導入菜單
- 視圖
- 控制器
- 特別注意
- annotation
- 導出菜單
- 視圖
- 控制器
- 排序
- 控制器
- 視圖
- 模型