## 知识点:
1、准备工作
2、添加规则
3、规则排序
4、规则删除
5、编辑规则
[TOC]
## 一、准备工作
### 1、build建Authrule模型
简单
### 2、引入类库
use think\Controller;
use think\Db;
use util\Tree;
use app\admin\model\Authrule as AuthruleModel;
### 3、操作
~~~
class Authrule extends Common {
public function index($tab = 1, $id = 0){
$authruleArray = AuthruleModel::order('id')->select();
foreach ($authruleArray as $key => $value) {
$authruleList[] = $value->toArray(); //对象转数组
}
$tree = new Tree();
$tree->tree($authruleList,'id','pid','title');
$authrule = $tree->getArray();
$this->assign('authrule',$authrule);
return view();
}
}
~~~
### 4、数据表不存在
解决方法
use think\Model;
~~~
class Authrule extends Model {
//当前模型对应的数据表名
protected $table = 'sfox_auth_rule';
}
~~~
### 5、树型菜单
~~~
use util\Tree;
$authruleArray = AuthruleModel::order('id')->select();
foreach ($authruleArray as $key => $value) {
$authruleList[] = $value->toArray(); //对象转数组
}
$tree = new Tree();
$tree->tree($authruleList,'id','pid','title');
$authrule = $tree->getArray();
$this->assign('authrule',$authrule);
~~~
tree有四个参数
参一:数组
参二:当前ID
参三:父ID
参数:中文名称
### 6、模型
~~~
<?php
namespace app\admin\model;
use think\Model;
class Authrule extends Model {
//当前模型对应的数据表名
protected $table = 'sfox_auth_rule';
}
~~~
### 7、新增pid、child、listorder字段
pid 父ID,默认值0,无符号
child 是否子孙,tinyint 长度1,默认值0,无符号
listorder 排序smallint,默认值0,无符号
## 二、添加规则
### 1、模板
片段:
~~~
<option value="{$vo.id}" {$vo.id ? '' : 'disabled'} {if condition="input('pid',0) eq $vo.id"}selected{/if}>{$vo.title}</option>
~~~
~~~
<div class="form-group">
<label class="col-sm-2 control-label">上级规则</label>
<div class="col-sm-10">
<select class="form-control m-b" name="pid">
<option value="0" selected>≡ 顶级 ≡</option>
{volist name="authrule" id="vo"}
<option value="{$vo.id}" {$vo.id ? '' : 'disabled'} {if condition="input('pid',0) eq $vo.id"}selected{/if}>{$vo.title}</option>
{/volist}
</select>
</div>
</div>
~~~
### 2、添加
~~~
public function add($tab = 1){
if(request()->isPost()){
$authruleModel = new AuthruleModel;
if($authruleModel->allowField(true)->save(input('post.'))){
return success('新规则添加成功!',url('index',['tab'=>1]));
}else{
return error('规则添加失败!',url('index',['tab'=>$tab]));
}
}
}
~~~
## 三、规则排序
~~~
public function index($tab = 1, $id = 0){
if(request()->isPost()){
foreach (input('post.listorder/a') as $key => $value) {
Db::name('auth_rule')->where('id',$key)->update(['listorder'=>$value]);
}
return success('排序更新成功!',url('index',['tab'=>$tab]));
}else{
$authruleArray = AuthruleModel::order('id')->select();
foreach ($authruleArray as $key => $value) {
$authruleList[] = $value->toArray(); //对象转数组
}
$tree = new Tree();
$tree->tree($authruleList,'id','pid','title');
$authrule = $tree->getArray();
$this->assign('authrule',$authrule);
// 编辑规则
if( 3 == $tab ){
// 获取所要编辑菜单的信息
$info = Db::name('auth_rule')->where('id',$id)->find();
if($info!=null && is_array($info)){
$this->assign('info',$info);
}
}
}
return view();
}
~~~
## 四、规则删除
~~~
public function delete($id = 0){
if(Db::name('auth_rule')->where('id', $id)->delete()){
return success('删除成功!',url('index',['tab'=>1]));
}else{
return error('删除失败!',url('index',['tab'=>1]));
}
}
~~~
## 五、编辑规则
### 1、获取所要编辑菜单的信息
~~~
public function index($tab = 1, $id = 0){
if(request()->isPost()){
foreach (input('post.listorder/a') as $key => $value) {
Db::name('auth_rule')->where('id',$key)->update(['listorder'=>$value]);
}
return success('排序更新成功!',url('index',['tab'=>$tab]));
}else{
$authruleArray = AuthruleModel::order('id')->select();
foreach ($authruleArray as $key => $value) {
$authruleList[] = $value->toArray(); //对象转数组
}
$tree = new Tree();
$tree->tree($authruleList,'id','pid','title');
$authrule = $tree->getArray();
$this->assign('authrule',$authrule);
// 编辑规则
if( 3 == $tab ){
// 获取所要编辑菜单的信息
$info = Db::name('auth_rule')->where('id',$id)->find();
if($info!=null && is_array($info)){
$this->assign('info',$info);
}
}
}
return view();
}
~~~
### 2、编辑操作
~~~
public function edit($tab = 1, $id = 0){
if(request()->isPost()){
$authrule_form = input('post.');
//判断child状态
if(input('post.child')==null){
$authrule_form['child'] = 0;
$count = Db::name('auth_rule')->where('pid',$id)->count();
if($count){
return error('该规则拥有子项,无法取消勾选!');
}
}
// 编辑规则
$authruleModel = new AuthruleModel;
if($authruleModel->allowField(true)->isUpdate()->save($authrule_form)){
return success('规则编辑成功!',url('index',['tab'=>1]));
}else{
return error('规则信息未修改或编辑失败!');
}
}
}
~~~
- Layer无刷新不跳转弹框提示信息
- 整合ThinkPHP+实用代码
- TP整合Layer插件实现无刷新
- 自定义助手函数
- 添加信息失败后不跳转
- 三种无限级分类
- TP常用代码
- 自定义公共函数
- TP模型管理专题
- TP模型管理之添加模型
- sfox_newmodel.sql
- TP模型管理之删除模型
- TP模型管理之编辑模型
- TP模型管理之字段添加
- sfox_newmodel.sql_edit
- layer_hplus.js_edit
- TP模型管理之字段删除
- TP模型管理之字段编辑
- TP模型管理之预览模型
- TP模型管理之公共函数
- layer_hplus.js_修订一
- TP模型管理之预览模型静态页
- 后台内容管理系统
- 分类树显示
- 内容列表显示
- 信息发布
- 编辑信息
- layer_hplus.js
- myJs第一版
- myJs第二版
- myJs第三版
- myJs第四版
- TP5插件用法
- Datatables
- WebUploader
- bootstrap-fileinput
- UEditor
- 简单调用
- 路径问题
- 跨域多图上传
- 跨域单图上传
- UEditor图片跨域上传解决方案
- 定制工具栏图标
- ajaxFileUpload
- LayUI
- 图片上传
- layui分页
- 搜索页
- 搜索优化及删除
- Uploadify
- TP5前端应用
- 静态首页
- 前台首页功能实现
- 自定义标签库
- 前台模板继承应用
- 首页自定义标签改进
- 文章内容页
- 自定义标签改进
- 自定义标签修正
- 图片等比例自动缩放
- 后台权限管理
- 角色管理
- 规则管理
- 权限设置
- 会员管理
- 权限管理
- 前台登录注册功能
- 注册登录
- 阿里大于手机注册
- 阿里大于升级阿里云短信服务
- 自动登录完成
- PHP异位或加密实现自动登陆
- 微信开发
- 分享接口
- 静态页面实现微信分享
- 动态页微信分享
- 页面静态化
- 1-全站静态化前期配置
- 2-链接地址静态化
- TP5常用片段代码
- 加载静态资源路径与常量
- thinkphp5预定义常量
- 删除某文件夹的内容
- 解压插件包
- 异步提交插件
- 其他功能
- 背景音乐
- 手机访问PC网站自动跳转到手机网站代码
- 手机微信音乐MP3播放器
- 后盾之网页背景音乐
- 播放器宽度自适应
- 前台首页数据调用
- 视频列表
- 搜索分页
- H5解决苹果(IOS)不能自动播放音乐
- 清空缓存
- 文件处理常识
- 删除路径下的所有文件夹和文件
- 一键清空缓存
- 评论留言
- 格式化时间
- 替换微博内容的URL地址@用户与表情
- PHP正则理解
- jQuery评论插件
- TP空操作
- TP路由
- 跨域访问
- 设置请其头允许跨域请求
- 模板前台判断手机访问跳转手机网址代码
- PHP遍历一个文件夹下所有文件和子文件夹
- PHP获取视频的第一帧与时长
- TP5数据库
- 链式操作原理
- update替换字段部分内容
- 后台开发
- 后台登录页居中显示
- TP5自带验证码
- JS & JQuery专题
- 二级城市联动菜单
- 模板引擎
- 混合模板编译
- 黄永成TP微博开发
- 消息推送
- memcache安装
- 插件开发
- 插件介绍
- 插件钩子
- 浅谈初步理解钩子
- 插件钩子(hooks)分析
- 插件钩子简单理解
- 控制器调用插件
- 钩子通用处理函数
- 插件基类代码
- 插件测试代码
- 浅谈钩子与插件
- 技术综合
- 常用代码
- PHP
- 56个PHP开发常用代码片段(上)
- 56个PHP 开发常用代码片段(中)
- 56个PHP 开发常用代码片段(下)
- sublime text安装自动补全注释的插件
- 影音视频开发
- 视频
- H5视频直播扫盲
- 音乐
- 语音
- PHP实现语音播报功能
- MUI
- 窗体操作