同步操作将从 小灰灰/huicmf_tp6 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
【基于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
https://huicmf6.xiaohuihui.net/admin.php
账号:admin
密码:admin888
1、后台控制器都需要继承:AdminController
2、使用了注解权限:
注解权限只能获取后台的控制器,也就是该app/admin/controller下
控制器类注解tag @ControllerAnnotation
备注:注解前请先引用: use app\admin\annotation\ControllerAnnotation;
/**
* @ControllerAnnotation(title="菜单管理")
* Class Node
* @package app\admin\controller\system
*/
class MenuController extends AdminController
{
}
方法节点类注解tag @NodeAnotation
备注:注解前请先引用: use app\admin\annotation\NodeAnotation;
/**
* @NodeAnotation(title="菜单列表")
*/
public function index()
{
}
所有原方法中的url()不要使用,要使用__url()方法来处理路由。
目的:隐藏模块名(admin)、后台入口。
更改为:http://你的域名/admin.php (admin.php可以自定义)
为什么前端也做权限认证,权限认证不应该是后端做的吗? 这里的权限认证指的是前端判断是否有权限查看的数据(例如:添加、删除、编辑之类的按钮),这些只有在点击到对应的url之后,后端才会进行权限认证。 为了避免用户困扰,可以在此用上前端的权限认证,判断是否显示还是隐藏
第一种示例, 通过php的auth()方法生成layui-hide样式属性。
<a class="layui-btn layui-btn-sm layui-btn-normal {if !check_auth('system.admin/edit')}layui-hide{/if}" data-open="{:__url('system.admin/edit')}?id={{d.id}}"
data-title="编辑管理">编辑</a>
第二种, 通过php的auth()方法判断, 是否显示html
{if check_auth('system.admin/edit')}
<a class="layui-btn layui-btn-sm layui-btn-normal " data-open="{:__url('system.admin/edit')}?id={{d.id}}"
data-title="编辑管理">编辑</a>
{/if}
data-open:弹出层打开:width:90%,height:80%
data-open-full:弹出层打开全屏:width:100%,height:100%
data-confirm:普通询问对话框
data-delete:删除询问对话框
//弹出层打开:width:90%,height:80%
<a href="javascript:;" data-open="{:__url('system.node/index')}" data-title="测试编辑打开" data-reload="1">编辑</a>
//弹出层打开全屏:width:100%,height:100%
<a href="javascript:;" data-open-full="{:__url('system.node/index')}" data-title="测试添加打开">添加</a>
//删除询问对话框
<a href="javascript:;" data-delete="{:__url('system.node/index')}" data-title="您确定要删除吗?">1231232313</a>
//普通询问对话框
<a href="javascript:;" data-confirm="{:__url('system.node/index')}" data-title="您确定要取消收藏吗?">1231232313</a>
案例页面:http://你的域名/admin.php/system.test/upload.html
1、在页面中直接使用layui上传
<!--html-->
<button type="button" class="layui-btn" id="test1"><i class="layui-icon"></i>上传图片</button>
/*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)
<button type="button" class="layui-btn layui-btn-normal layUpload" id="lay_pic" data-input-id="c-pic" data-type="image">
<i class="layui-icon"></i>上传图片
</button>
以上代码中国注释如下:
| 参数名 |是否允许为空| 参数值| | ------------ | ------------ | | class | 否 |layUpload [必填一致]| | id | 否 |例如:lay_pic| | data-input-id | 否 |图片文本框的id值,用于返回url填充| | data-type | 是 |image [图片格式];file [附件格式]|
3、使用封装好的webUploader插件上传(只需要一个按钮,无需在页面中写js)
参数同上
<button type="button" class="webUpload" id="picker_pic" data-multiple="false" data-input-id="c-pic"
data-preview-id="p-pic" data-type="image"><i class="layui-icon"></i>上传图片
</button>
插件基于:zzstudio/think-addons 进行了二开处理
<div class="layui-form-item tpl-district-container">
<label class="layui-form-label">地区</label>
<div class="layui-inline">
<select name="province" lay-filter="tpl-province" data-value="" class="form-control tpl-province">
</select>
</div>
<div class="layui-inline">
<select name="city" lay-filter="tpl-city" data-value="" class="form-control tpl-city">
</select>
</div>
<div class="layui-inline">
<select name="area" lay-filter="tpl-district" data-value="" class="form-control tpl-district">
</select>
</div>
</div>
之后在layui里引用一下即可。其中 data-value 属性是用于编辑的赋值
<span class="number-timer">66</span>
layui.use(['jquery', 'miniCountUp'], function () {
var $ = layui.jquery;
var countUp = layui.miniCountUp;
var count_up = new countUp({
target: $('.number-timer'),
startVal: 0, //目标开始的值,默认值为0
endVal: 3, //到达目标值,默认值为元素的值
decimals: 0, //小数位数,默认值为0
duration: 1.5, //动画持续时间为秒,默认值为2
});
count_up.start();
});
接口文档使用了apidoc
使用composer安装:
composer require hg/apidoc
http://你的域名/apidoc
如果无法访问请查看伪静态是否正确
请检查路径是否正确
以下项目排名不分先后
HuiCMF遵循Apache2.0开源协议发布,并允许商业使用。 本项目包含的第三方源码和二进制文件之版权信息另行标注。 版权所有Copyright © 2019-2022 by xiaohuihui (https://xiaohuihui.net.cn) All rights reserved。
HuiCMF遵循Apache2.0开源协议发布,并允许商业使用。任何用户在使用
HuiCMF
后台框架前,请您仔细阅读并透彻理解本声明。您可以选择不使用HuiCMF
后台框架,若您一旦使用HuiCMF
后台框架,您的使用行为即被视为对本声明全部内容的认可和接受。
HuiCMF
后台框架是一款开源免费的后台快速开发框架 ,主要用于更便捷地开发后台管理;其尊重并保护所有用户的个人隐私权,不窃取任何用户计算机中的信息。更不具备用户数据存储等网络传输功能。HuiCMF
后台框架,不利用HuiCMF
后台框架进行任何违法、侵害他人合法利益等恶意的行为,亦不将HuiCMF
后台框架运用于任何违反我国法律法规的 Web 平台。HuiCMF
后台框架而产生的任何意外、疏忽、合约毁坏、诽谤、版权或知识产权侵犯及其造成的损失 (包括但不限于直接、间接、附带或衍生的损失等),本开源项目不承担任何法律责任。HuiCMF
后台框架可能存在的风险和相关后果将完全由用户自行承担,本开源项目不承担任何法律责任。HuiCMF
后台框架等行为,若违反本免责声明条款或违反法律法规所造成的法律责任(包括但不限于民事赔偿和刑事责任),由违约者自行承担。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。