# huicmf_tp6 **Repository Path**: pipeng/huicmf_tp6 ## Basic Information - **Project Name**: huicmf_tp6 - **Description**: huiCMF,thinkphp6开发 - **Primary Language**: PHP - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 17 - **Created**: 2022-03-31 - **Last Updated**: 2024-07-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README HuiCMF v6.0 =========== **【基于ThinkPHP6.0和layui的快速开发的后台管理系统。】** **用于学习并允许商业使用。** > 运行环境要求PHP7.2+(兼容PHP8.0),Redis。 > > 数据库要求:mysql5.5+,推荐5.7。 > > 编辑器使用了 editor.md | UEeditor | icEditor > > 支持插件安装,(使用了think-addons扩展插件) > > 系统默认缓存方式为redis。请先安装并开启redis。 > > 如果不想使用redis,请更改根目录.evn文件中DRIVER = redis的值为file ## 安装 - 首先:git clone 获取数据 - 然后:composer update 更新数据 - 接着:根目录 .example.env 复制一份重命名:.env(去掉.example) - 访问: http://你的域名/install - 执行安装程序 - 最后访问后台:http://你的域名/admin.php - 默认后台账号密码: admin admin888 ## 后台演示 https://huicmf6.xiaohuihui.net/admin.php 账号:admin 密码:admin888 ## 使用说明 1、后台控制器都需要继承:AdminController 2、使用了注解权限: # 注解权限 > 注解权限只能获取后台的控制器,也就是该app/admin/controller下 ## 控制器注解权限 > 控制器类注解tag @ControllerAnnotation - 注解类: HuiCMF\annotation\ControllerAnnotation - 作用范围: CLASS - 参数说明: title 控制器的名称(必填) auth 是否开启权限控制,默认为true (选填,Enum:{true, false}) #### 示例 > 备注:注解前请先引用: use app\admin\annotation\ControllerAnnotation; ~~~ /** * @ControllerAnnotation(title="菜单管理") * Class Node * @package app\admin\controller\system */ class MenuController extends AdminController { } ~~~ ## 方法节点注解权限 > 方法节点类注解tag @NodeAnotation - 注解类: HuiCMF\annotation\NodeAnotation - 作用范围: METHOD - 参数说明: title 方法节点的名称(必填) auth 是否开启权限控制,默认为true (选填,Enum:{true, false}) #### 示例: > 备注:注解前请先引用: use app\admin\annotation\NodeAnotation; ~~~ /** * @NodeAnotation(title="菜单列表") */ public function index() { } ~~~ ### 3、方法中重写了url(),为__url() 所有原方法中的url()不要使用,要使用__url()方法来处理路由。 目的:隐藏模块名(admin)、后台入口。 更改为:http://你的域名/admin.php (admin.php可以自定义) ## 后台前端问题 ### 1、前端auth权限验证 > 为什么前端也做权限认证,权限认证不应该是后端做的吗? 这里的权限认证指的是前端判断是否有权限查看的数据(例如:添加、删除、编辑之类的按钮),这些只有在点击到对应的url之后,后端才会进行权限认证。 为了避免用户困扰,可以在此用上前端的权限认证,判断是否显示还是隐藏 **第一种示例, 通过php的auth()方法生成layui-hide样式属性。** ~~~ 编辑 ~~~ **第二种, 通过php的auth()方法判断, 是否显示html** ~~~ {if check_auth('system.admin/edit')} 编辑 {/if} ~~~ ### 2、按钮属性 data-open:弹出层打开:width:90%,height:80% data-open-full:弹出层打开全屏:width:100%,height:100% data-confirm:普通询问对话框 data-delete:删除询问对话框 - data-reload="1" 刷新父级页面【例如点击编辑按钮弹出窗口后保存或者关闭窗口在列表页(父级)页面刷新。默认不写或者 data-reload="0"为不刷新】 - data-reload="2" 刷新当前页面【例如点击编辑按钮弹出窗口后保存或者关闭窗口在当前页面刷新。默认不写或者 data-reload="0"为不刷新】 【实例:】 ~~~ //弹出层打开:width:90%,height:80% 编辑 //弹出层打开全屏:width:100%,height:100% 添加 //删除询问对话框 1231232313 //普通询问对话框 1231232313 ~~~ ### 3、上传图片(附件) 案例页面:http://你的域名/admin.php/system.test/upload.html > 1、在页面中直接使用layui上传 ```html ``` ```javascript /*javascript*/ upload.render({ elem: '#test1' , url: "{:__url('upload/index',['save_path'=>'images'])}" , done: function (res) { if (res.code === 1) { $("#image").val(res.url); } } }) ``` > 2、使用封装好的layui上传(只需要一个按钮,无需在页面中写js) #### 使用案例: ```html ``` **以上代码中国注释如下:** | 参数名 |是否允许为空| 参数值| | ------------ | ------------ | | class | 否 |layUpload [必填一致]| | id | 否 |例如:lay_pic| | data-input-id | 否 |图片文本框的id值,用于返回url填充| | data-type | 是 |image [图片格式];file [附件格式]| > 3、使用封装好的webUploader插件上传(只需要一个按钮,无需在页面中写js) **参数同上** ```html ``` ### 4、二开了think-addons扩展插件 **插件基于:zzstudio/think-addons 进行了二开处理** 1. 在helper助手中增加了部分公共方法 2. 修改了Addons.php文件,方便在程序中二次调用 3. 插件文件夹里: - 插件名要和插件控制器一直,例如: test插件文件夹里的 Test.php文件 - info.ini 一定要有,而且字段要对应 - config.php文件参数 参考 test插件里的 ### 5、后台表单省市区域三级联动 ```html