当前位置: 首页 > news >正文

php权限无需验证的控制器,控制器 · ThinkPHP5权限管理 · 看云

## 思路

比较简单

一:提交验证器验证

二:插入到数据表 `admin_menu`

三:插入到 `auth_rule` 表(可选)

四:导出到 `admin_menu.php` 语言包!(可选)

## 代码

>特别注意下边的注释代码

>`注释一`的代码是为了写入到 `auth_rule` 表当中的,如果想写入的话,这里可以把注释去掉,如果不用可以删除!

>`注释二` 的代码是为了导出语言包的!如果不用可以删除!导出需要方法 `_exportAppMenuDefaultLang`!

```

namespace app\agent\controller;

use think\Controller;

use think\Db;

class MenuController extends Controller

{

/**

* 后台菜单添加提交保存

*/

public function addPost()

{

if ($this->request->isPost()) {

$result = $this->validate($this->request->param(), 'AdminMenu');

if ($result !== true) {

$this->error($result);

} else {

$data = $this->request->param();

Db::name('AdminMenu')->strict(false)->field(true)->insert($data);

// 注释一:这里写入到 auth_rule 表

// $app = $this->request->param("app");

// $controller = $this->request->param("controller");

// $action = $this->request->param("action");

// $param = $this->request->param("param");

// $authRuleName = "$app/$controller/$action";

// $menuName = $this->request->param("name");

// $findAuthRuleCount = Db::name('AuthRule')->where([

// 'app' => $app,

// 'name' => $authRuleName,

// 'type' => 'admin_url'

// ])->count();

// if (empty($findAuthRuleCount)) {

// Db::name('AuthRule')->insert([

// "name" => $authRuleName,

// "app" => $app,

// "type" => "admin_url",

// "title" => $menuName,

// 'param' => $param,

// ]);

// }

$sessionAdminMenuIndex = session('admin_menu_index');

$to = empty($sessionAdminMenuIndex) ? "Menu/index" : $sessionAdminMenuIndex;

// 注释二:这里导出表

// $this->_exportAppMenuDefaultLang();

$this->success("添加成功!", url($to));

}

}

}

}

```

## 导出后台菜单语言包方法

```

/**

* 导出后台菜单语言包

*/

private function _exportAppMenuDefaultLang()

{

$menus = Db::name('AdminMenu')->order(["app" => "ASC", "controller" => "ASC", "action" => "ASC"])->select();

$langDir = config('DEFAULT_LANG');

$adminMenuLang = CMF_ROOT . "data/lang/" . $langDir . "/admin_menu.php";

if (!empty($adminMenuLang) && !file_exists_case($adminMenuLang)) {

mkdir(dirname($adminMenuLang), 0777, true);

}

$lang = [];

foreach ($menus as $menu) {

$lang_key = strtoupper($menu['app'] . '_' . $menu['controller'] . '_' . $menu['action']);

$lang[$lang_key] = $menu['name'];

}

$langStr = var_export($lang, true);

$langStr = preg_replace("/\s+\d+\s=>\s(\n|\r)/", "\n", $langStr);

if (!empty($adminMenuLang)) {

file_put_contents($adminMenuLang, "<?php \nreturn $langStr;");

}

}

```

>问一:那数据导出到哪了?

答:在 /data/lang/zh-cn/admin_menu.php 中

![mark](http://qiniu.newthink.cc/blog/20171019-121113505.png)

>问二:数据表及文件数据格式是什么呢?

答:如图:

1、操作完成列表显示

![mark](http://qiniu.newthink.cc/blog/20171019-121239199.png)

2、数据库

![mark](http://qiniu.newthink.cc/blog/20171019-121201703.png)

3、admin_menu.php 文件

![mark](http://qiniu.newthink.cc/blog/20171019-121224615.png)

相关文章:

  • 两'参数粒子群matlab,SVM用粒子群优化参数
  • 数据在文本框中显示 php,在文本框中使用php和纯ajax从数据库加载数据
  • 数字信号处理matlab滤波器,数字信号处理matlab滤波器课程设计
  • matlab逆求贝塞尔函数变量值,MATLAB怎么求解有贝塞尔函数的问题,求高手帮帮忙,谢谢...
  • java 继承 默认作用域,Spring(三)——Bean的 继承关系、依赖关系、作用域
  • matlab中的newfis,(To be removed) Create new fuzzy inference system
  • php apache 301重定向,Apache下修改.htaccess实现301重定向方法汇总
  • php一对多关联,SpeedPHP/数据表一对多关联
  • import matlab.engine,请教python导入matlab engine失败的问题。
  • php封装pdo连接书记库,PHP封装的PDO数据库操作类实例分析
  • 推荐几本php的好书,新手,求几本php的好书!
  • 管理python库的工具,Python的包管理工具
  • php 对象注入,小记一次PHP对象注入
  • oracle export表结构,oracle下导入导出表结构
  • oracle自定义异常标量,gqlgen/graphql自定义标量
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 2017年终总结、随想
  • CentOS7 安装JDK
  • gops —— Go 程序诊断分析工具
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 阿里云前端周刊 - 第 26 期
  • 前端性能优化--懒加载和预加载
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 我从编程教室毕业
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​如何防止网络攻击?
  • ​业务双活的数据切换思路设计(下)
  • #define
  • $.ajax,axios,fetch三种ajax请求的区别
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转载)Linux 多线程条件变量同步
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net 生成二级域名
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .net专家(高海东的专栏)
  • @angular/cli项目构建--http(2)
  • @property @synthesize @dynamic 及相关属性作用探究
  • [2021 蓝帽杯] One Pointer PHP
  • [ACTF2020 新生赛]Include
  • [Android]使用Android打包Unity工程
  • [C/C++]数据结构 栈和队列()
  • [C\C++]读入优化【技巧】
  • [C++]指针与结构体
  • [C++打怪升级]--学习总目录
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [IE技巧] IE 中打开Office文件的设置
  • [Jquery] 实现温度计动画效果
  • [LeetCode]-225. 用队列实现栈-232. 用栈实现队列
  • [LeetCode]剑指 Offer 42. 连续子数组的最大和