# :-: 第一部创建角色表
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 错误代码