# :-: 第一部創建角色表
CREATE TABLE `zuche`.`roles` ( `id` MEDIUMTEXT NOT NULL AUTO_INCREMENT , `role_name` VARCHAR(20) NOT NULL COMMENT '角色名字' , `privilege_id` TEXT NOT NULL COMMENT '角色id' , `create_time` INT NOT NULL COMMENT '創建時間' , `update_time` INT NOT NULL COMMENT '修改時間' , PRIMARY KEY (`id`), UNIQUE (`role_name`)) ENGINE = InnoDB;
# :-: 加載首頁php代碼
~~~
public function index()
{
$roles = Db::table('role')->all();
return view('',compact('roles'));
}
~~~
# :-: 首頁Html 頁面
~~~
{include file='common/father_css'/}
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
<div class="row">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>權限列表</h5>
<div class="ibox-tools" style="margin-top: -5px!important;">
<a href="{:url('admin/role/add')}"> <button class="btn btn-danger btn-sm">添加新角色</button></a>
</div>
</div>
<div class="ibox-content">
<div class="table-responsive">
<form name="myform" id="myform" method="post">
<table class="table table-striped">
<thead>
<tr>
<th>id</th>
<th>權限名稱</th>
<th>創建時間</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{foreach $roles as $v}
<tr>
<td>
{$v['id']}
</td>
<td>
{$v['role_name']}
</td>
<td>{$v['privilege_id']}</td>
<td>
<div class="layui-table-cell laytable-cell-1-0-10">
<a class="layui-btn layui-btn-xs" lay-event="edit" href="{:url('admin/role/edit',['id'=>$v['id']])}">編輯</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" onclick="del({$v.id})">刪除</a>
</div>
</td>
</tr>
{/foreach}
</tbody>
</table>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 全局js -->
<script>
function del(id) {
swal({
title: "確定刪除嗎?",
text: "你將無法回復該用戶,點擊空白區,取消選框",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "確定刪除!",
cancelButtonText: "取消刪除!",
closeOnConfirm: false,
closeOnCancel: false
}).then(
function(isConfirm){
if (isConfirm) {
//或者id ,傳遞給后臺
window.location.href = "/admin/role/delete/id/"+id
} else {
swal("取消!", "你的用戶刪除結束)",
"error");
}
});
}
</script>
</body>
</html>
~~~
# :-: 添加角色Php代碼
~~~
//添加角色頁面
public function add(\app\admin\model\Privileges $privileges)
{
//調取 權限數據
$privileges = $privileges->privilegestrey();
return view('',compact('privileges'));
}
//角色列表數據處理
public function addSave(Request $request)
{
$data = $request->param();
$validate = new Validate(
[
'role_name|角色' => 'require',
'privilegeid|權限' => 'require',
]);
$info = $validate->check($data);
$data['privilege_id'] = implode(',',$data['privilegeid']);
unset($data['privilegeid']);
// halt($data);
// halt($data);
if ($info){
// halt($data);
$rules = model('role')->save($data);
// halt($rules);
if ($rules){
return $this->success('角色添加成功','admin/role/index');
}
} else{
return $this->error($validate->getError());
}
// halt($data);
}
//加載權限數據,寫到模型里面的
//獲得排序
public function privilegestrey(){
//獲得欄目所有數據
$data = Privileges::all();
//把獲得欄目的數據放到下面處理
return $this->sort($data);
}
//遞歸處理排序
public function sort($data,$pid =0,$level = 0){
//定義一個靜態數組
static $arr = [];
foreach($data as $v){
if ($pid == $v['pid']){
$v['level']=$level;
$arr[] = $v;
$this->sort($data,$v['id'],$level+1);
}
}
//獲得一級id
return $arr;
}
~~~
# :-: 添加Html 代碼
~~~
{include file='common/father_css'/}
<body class="gray-bg">
<div class="wrapper wrapper-content">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>角色名稱
<small class="text-danger">注意:角色名稱不能重復,也不能為空</small>
</h5>
</div>
<div class="ibox-content">
<form method="post" class="form-horizontal layui-form" id="register"
action="{:url('admin/role/addSave')}">
<div class="form-group">
<label class="col-sm-2 control-label text-danger">*角色名稱</label>
<div class="col-sm-10">
<input type="text" value="" name="role_name" class="form-control" required
placeholder="角色名稱必須為中文">
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label class="col-sm-2 control-label text-danger">*權限選擇</label>
<div class="col-sm-10 ">
<ul>
{foreach $privileges as $v}
<li level="{$v.level}">
<input type="checkbox" name="privilegeid[]" lay-skin="primary" value="{$v['id']}" id="checkbox">
{if condition = "$v['level'] neq 0 "} |{/if}
{if condition = "$v['level'] eq 0 "}<span class="text-danger"><span class="layui-badge">頂級</span>{/if}
<?php echo str_repeat('   -', $v['level']*4);?>
{$v->p_name}
{if condition = "$v['level'] eq 0 "}</span>{/if}
</li>
{/foreach}
</ul>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-primary layui-btn-radius" type="submit">添加角色</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script>
layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload;
//拖拽上傳
upload.render({
elem: '#test10'
, url: '/admin/category/imgUpload'
, data: {}
//,drag:true //是否接受拖拽的文件上傳,設置 false 可禁用。不支持ie8/9
//上傳成功之后的回調
, done: function (res) {
let {code, data, msd} = res
if (code == 0) {
$('#test10').html(`<img src = "${data['src']}" width="50px" height="50px">
<input name="pic" type="hidden" value="${data['src']}"/>`)
} else {
swal({
text: res.message,
icon: "warning",
button: false
});
}
}
});
});
layui.use('layedit', function () {
var layedit = layui.layedit;
layedit.build('demo', {
//tool: ['left', 'center', 'right', '|', 'face'],//自定義 tollbar
height: 180 //設置編輯器高度
, uploadImage: {
url: "/admin/category/imgUpload",
type: 'post'
}
});
});
//表單清空
</script>
<script type="text/javascript">
$( "input[name='checkbox']").click(function(){
alert(1);
var cur_li=$(this).parent();
var level=cur_li.attr("level");
var checked=$(this).attr("checked");
cur_li.prevAll("li").each(function(){
if($(this).attr("level")<level && checked ){
$(this).find(":checkbox").attr("checked","checked");
if($(this).attr("level")==0){
return false;
}
}
});
if(!checked){
//
cur_li.nextAll("li").each(function(){
if($(this).attr("level")>level){
$(this).find(":checkbox").removeAttr("checked");
}else{
return false;
}
});
//
}
});
</script>
</body>
</html>
~~~
# :-: 修改角色Phpd代碼
~~~
//角色修改數據處理
public function edit($id,\app\admin\model\Privileges $privileges)
{
//調取 權限數據
$privileges = $privileges->privilegestrey();
$role = \app\admin\model\Role::where('id',$id)->find();
$role['privilege_id'] = explode(',',$role['privilege_id']);
// halt($role);
return view('',compact('role','privileges'));
}
//角色修改數據處理
public function update(Request $request,$id)
{
$data = $request->param();
$data['privilege_id'] = implode(',',$data['privilegeid']);
unset($data['privilegeid']);
$info = \app\admin\model\Role::where('id',$id)->data($data)->update();
if ($info){
$this->success('權限修改成功','/admin/role/index');
}
}
~~~
# :-: 角色Hmtl 代碼
~~~
{include file='common/father_css'/}
<body class="gray-bg">
<div class="wrapper wrapper-content">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>角色名稱
<small class="text-danger">注意:角色名稱不能重復,也不能為空</small>
</h5>
</div>
<div class="ibox-content">
<form method="post" class="form-horizontal layui-form" id="register"
action="{:url('admin/role/update')}">
<div class="form-group">
<label class="col-sm-2 control-label text-danger">*角色名稱</label>
<div class="col-sm-10">
<input type="text" value="{$role.role_name}" name="role_name" class="form-control" required
placeholder="角色名稱必須為中文">
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<label class="col-sm-2 control-label text-danger">*權限選擇</label>
<input type="hidden" name="id" value="{$role.id}">
<div class="col-sm-10 ">
<ul>
{foreach $privileges as $v}
<li level="{$v.level}">
<input type="checkbox" name="privilegeid[]" lay-skin="primary" value="{$v['id']}" id="checkbox"
{foreach $role['privilege_id'] as $c}
{eq name='$c' value="$v.id"} checked{/eq}
{/foreach}
>
{if condition = "$v['level'] neq 0 "} |{/if}
{if condition = "$v['level'] eq 0 "}<span class="text-danger"><span class="layui-badge">頂級</span>{/if}
<?php echo str_repeat('   -', $v['level']*4);?>
{$v->p_name}
{if condition = "$v['level'] eq 0 "}</span>{/if}
</li>
{/foreach}
</ul>
</div>
</div>
<div class="hr-line-dashed"></div>
<div class="form-group">
<div class="col-sm-4 col-sm-offset-2">
<button class="btn btn-primary layui-btn-radius" type="submit">修改角色</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script>
layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload;
//拖拽上傳
upload.render({
elem: '#test10'
, url: '/admin/category/imgUpload'
, data: {}
//,drag:true //是否接受拖拽的文件上傳,設置 false 可禁用。不支持ie8/9
//上傳成功之后的回調
, done: function (res) {
let {code, data, msd} = res
if (code == 0) {
$('#test10').html(`<img src = "${data['src']}" width="50px" height="50px">
<input name="pic" type="hidden" value="${data['src']}"/>`)
} else {
swal({
text: res.message,
icon: "warning",
button: false
});
}
}
});
});
layui.use('layedit', function () {
var layedit = layui.layedit;
layedit.build('demo', {
//tool: ['left', 'center', 'right', '|', 'face'],//自定義 tollbar
height: 180 //設置編輯器高度
, uploadImage: {
url: "/admin/category/imgUpload",
type: 'post'
}
});
});
//表單清空
</script>
<script type="text/javascript">
$( "input[name='checkbox']").click(function(){
alert(1);
var cur_li=$(this).parent();
var level=cur_li.attr("level");
var checked=$(this).attr("checked");
cur_li.prevAll("li").each(function(){
if($(this).attr("level")<level && checked ){
$(this).find(":checkbox").attr("checked","checked");
if($(this).attr("level")==0){
return false;
}
}
});
if(!checked){
//
cur_li.nextAll("li").each(function(){
if($(this).attr("level")>level){
$(this).find(":checkbox").removeAttr("checked");
}else{
return false;
}
});
//
}
});
</script>
</body>
</html>
~~~
# 角色刪Php代碼
~~~
//角色刪除
public function delete($id)
{
$info = \app\admin\model\Role::destroy($id);
if ($info){
$this->success('角色刪除成功','/admin/role/index');
}
}
~~~
- Tp 框架5.1安裝
- Tp 資源控制器創建跟非資源控制器
- Tp 自定義目錄
- Tp 鏈接傳參,地址欄獲取參數
- Tp ajax 異步提交數據
- Tp 模型里面指定開啟時間戳
- Tp加載驗證碼
- Tp 模版
- Tp 模版繼承
- Tp模版頁面If 條件 及session存儲 取出
- Tp 默認在模版頁面指定內容
- Tp 模版頁面獲取session
- Tp驗證器
- Tp 自定義驗證
- Thinkphp 模型驗證規則使用
- Tp 文件上傳
- Tp 實現注冊自動登錄
- Tp 編輯器
- Tp 結合 Markdown里面的editor編輯器
- Tp Marckdown 編輯模版輸出
- Tp 搜索功能
- Tp 點贊 收藏
- Tp 基本權限
- Tp 創建驗證器
- Sweetalert 彈出框 引用
- Tp 網站 開啟 關閉功能
- Tp 網站 開啟 注冊功能
- Tq QQ登錄
- Tp 郵箱注冊 驗證
- Tp 無限極分類
- Tp 路由
- Tp RBAC權限 適合于任何框架
- 創建權限模型,控制器,驗證規則
- 創建角色 控制器 模型 驗證規則
- 用戶角色設置
- 權限驗證
- Tp auth 權限
- 第一部 auth 安裝
- 第二部 創建 三張數據庫
- 第三部 創建用戶控制器
- 第四部 創建規則表
- 規則表基本操作
- 1 規則頁面加載
- 2 添加規則
- 3 編輯規則
- 4 刪除規則
- 第五部 創建用戶組
- 用戶組基本操作
- 第一步 展示用戶組首頁
- 第二步 添加用戶組
- 第三步 編輯用戶組
- 第四部 刪除用戶組
- 第六步設置權限
- 第一步 創建 模型 控制器
- 第二步 首頁顯示
- 第三部 設置用戶權限
- 第七步 執行權限認證
- 備注 附加規則原理
- Tp 數據庫
- 外鍵約束
- Tp 結合layui 上傳
- Layui 編輯器 前端展示
- Tp 模版eq
- Tp 刪除
- Tp session 處理
- Tp cache緩存方法
- Tp 后臺驗證管理員登錄
- 前臺Nav 導航
- 左邊導航
- Tp 批量刪除
- O2O
- Tp框架插入數據自帶時間戳
- Tp 結合layui 分頁
- Tp 整合百度地圖
- Tp 結合城市三級聯動
- 密碼驗證
- 團購時間
- Tp模板時間修改
- 安卓App 平臺入駐上線
- Api 接口返回
- Thinkphp 生成5.1二維碼
- 回調Api
- layui 關閉框 刷新
- Layui 監聽
- 判斷是否是pc端 手機端
- Lauyi 自動轉換時間
- Tp 增加時間
- ajax 同步 異步處理
- 彈出框
- 傳輸數據編輯
- 上傳 引用 uploadify
- js 收縮
- Tp 增加數據表
- Tp-前置鉤子
- 刪除代碼
- 適合tp5.0描述文字過長
- php 三級城市城市表帶數據
- layu結合 tp table數據數組循環
- layui 解決數據為NUll 錯誤代碼