yii2-ace-admin 后台模板 [ 2.0 版本 ]
Yii-ace-admin 是使用Yii2开发的一个后台管理系统, 后台模板使用ace-admin
主要功能:RBAC
特点: 方便开发,对数据表的显示、搜索、修改、新增基本功能进行了封装
对表的数据操作
1、gii 生成model
2、后台模块功能生成 控制器 和 视图
源码地址: https://github.com/myloveGy/yii2-ace-admin
安装:
1、git clone https://github.com/myloveGy/yii2-ace-admin.git
2、浏览器进入该目录index.php(简单的做了一个安装脚本,填写下数据库信息执行就好了, 数据库为文件项目目录下 yii2.sql)
3、后台默认管理员账号 super 密码 admin123
预览:
1、首页
2、数据显示
3、模块生成(生成视图文件)
4、其他页面展示
liujingxing 上海
注册时间:2016-11-20
最后登录:2024-11-09
在线时长:74小时37分
最后登录:2024-11-09
在线时长:74小时37分
- 粉丝28
- 金钱31775
- 威望40
- 积分32915
热门源码
- 基于 Yii 2 + Bootstrap 3 搭建一套后台管理系统 CMF
- 整合完 yii2-rbac+yii2-admin+adminlte 等库的基础开发后台源码
- 适合初学者学习的一款通用的管理后台
- yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程
- yii-log-target - 监控系统异常且多渠道发送异常信息通知
- 店滴云1.3.0
- 面向对象的一小步:添加 ActiveRecord 的 Scope 功能
- Yii2 开源商城 FecShop
- 基于 Yii2 开发的多店铺商城系统,免费开源 + 适合二开
- leadshop - 基于 Yii2 开发的一款免费开源且支持商业使用的商城管理系统
共 79 条评论
您好,请问在个别表单操作列中,通过m = mt({ operations : buttons 增加操作按钮,请问这个按钮如何调用自定义层的表单呢。或者表单是另外一个文件,不用获得事件进行跳新页面。达到和现有编辑 显示 同样效果。
添加其他按钮的话 配置 operations 配置项:
operations: { width: "200px", // 这列的宽度 buttons: { // 其他按钮配置 "other": { "title": "其他按钮",// a 标签 的title 属性 "button-title": "其他按钮", // 按钮显示文字 "className": "btn-warning",// 按钮class 样式 标签 "cClass":"role-edit",// 按钮和a 标签共用class 标签 "icon":"fa-pencil-square-o", // a 标签 icon 图标 "sClass":"yellow" // a标签自己的class 标签 } } },
这个是按钮的配置,然后还需要监听下这个按钮的事件:
$(document).on("click", ".role-edit", function(){ var index = $(this).attr("table-data"),// 这个是获取到表格的第几行 data = m.table.data()[index];// 获取到这一行的数据 if (data) { // 拿到数据了,做相应的处理 } })
可以参考角色信息中的 编辑权限按钮
修改现在的查看,修改,删除的按钮的操作处理的话, 只要单独配置下operations 下的 buttons 配置项,就是覆盖掉之前的配置
operations: { "buttons": { "see": {"cClass": "自定义的class"}, // update 和 delete 同样 } }
然后自己监听按钮点击事件,做相应的处理
老板怎么回事啊。vendor目录都没有。报错如下:
需要使用composer 安装的!
@liujingxing composer怎么安装,能不能具体讲下
使用composer 安装的话,要确保你安装了composer , 在你的目录中 执行
composer create-project liujx/yii2-app-advanced 你想要命名的目录,没有就是yii2-app-advanced
命令就好了,后续的命令可以看https://packagist.org/packages/liujx/yii2-app-advanced
如果你是git 下载下来的,可以到目录里面执行 composer install 命令,后续命令参照上面的
求教,对于不同角色,看到不同的菜单。有没有什么好的思路。目前在menu增加了一个状态位,取数据的时候做判断。但是增加角色得增加相应的状态位。这样还有个问题,两个不同角色有相同访问权限时候不好配置。征求下大家的思路。
目前该套后台,导航栏目的显示是根据权限显示的,添加导航栏目的地址比如: menu/index 对应的权限是 menu/index;所以是满足你现在的需求的,不同的角色分配不同的权限,然后显示不同的导航栏目!
还有一个方案就是: 角色表中有 data 字段,可以用来确定角色对应的导航,就是把角色对应的导航ID存入data中,显示导航的时候从用户的角色里面取就好了,这个方案是我最开始使用的,不过我觉的可以用权限控制,就没有必要添加额外的控制的了
按照第一种方法貌似不行。菜单没有按照权限显示,都显示menu表中的内容。
目前我想到的用 auth_item_child的 child 和 menu的url inner join关联下,where parent当前权限。这样显示权限就控制了。这个权限没有的menu也就不显示了。
不会的,第一种方法是没有问题,因为我导航栏目查询的时候,就是用 权限表中的 auth_item_child的值,然后去查menu表中的数据的!不知道你看角色的导航栏目是怎么看的,你要用拥有这个角色的管理员登录下看看,是不会有问题的!如果只是在权限列表中的详情中看的话,是有问题的!因为详情我处理的时候,是拿的当前登录用户的权限,而不是当前详情角色的权限,所以在详情显示的导航栏目是有问题的!这个问题我前几天就修改了!
具体代码修改:
// RoleController 控制器 actionView 方法 176 行 $permissions = $this->getPermissions(); 改为 $permissions = Yii::$app->authManager->getPermissionsByRole($name);
我改的backend\models 里面的setNavigation方法
功能实现都一样!不过我看setNavigation 方法是没有问题的, 因为menu信息就是通过权限去查的!而且本来就是不同角色对应的不同的导航栏目!目前我没有发现有什么问题,会导致你说的所有角色都是显示全部导航的问题!只有理员ID 为 1 的时候,不是走权限的获取导航栏目
我想添加这模板自带的一些控件,然后我发现比如图标,模板上是CSS继承font-awesome.min.css的。我也看了自己页面都加载3个font-awesome.min.css,当图标的CLASS还是没找到这个。3个中有一个我找不到在哪里加载进来的,除了layout和AppAsset哪里还又加载了一遍模板和相关文件
这套模板是的前端资源都在: /web/public/assets 目录下;资源加载类有两个,AppAsset 和AdminAsset, 两个类只是加载的js 不一样,css 是一样的,默认只是加载了
/** * @var array 加载的公共css */ public $css = [ 'css/bootstrap.min.css', 'css/font-awesome.min.css', 'css/ace-fonts.css', ]; /** * @var array 定义默认加载的js */ public $js = [ 'js/ace-elements.min.js', 'js/ace.min.js', ];
因为除了登录成功以后的首页(模板对应 site/index.php,没有使用布局),其他都页面是通过iframe 加载出来的,使用的layouts/main.php布局 加载的,因为每个iframe 会加载那三个css,所以你每开一个iframe页面就会加载一次。你要加载其他控件的css和js,需要在视图中通过 $this->registerCssFile() 和 $this->registerJsFile() 注册就好了
为什么有些表建的模块不能进行增删改查,而有些表又可以
有错误没有?js 和 后台程序有出现错误没?
@liujingxing 已经解决了 这个模板建表要带主键才行
还有联表查询的代码写在哪里哟,怎么写哟
在dev-master 版本 中,在需要联表查询的时候 重写这个方法就好了,添加联表查询就好了
/** * 获取查询对象(查询结果一定要为数组) * * @param mixed|array $where 查询条件 * @return \yii\db\ActiveQuery 返回查询对象 * @see actionSearch() * @see actionExport() */ protected function getQuery($where) { /* @var $model \yii\db\ActiveRecord */ $model = $this->modelClass; return $model::find()->where($where)->asArray(); }
感谢 感谢 还想问问搜索功能如何添加时间选择器呢?
@liujingxing 保存在数据库的是时间戳,text框查询也只能输入时间戳查询,不能以年月日作为条件查询需要怎么做修改呢
@296481902@qq.co 你直接用 jquery的时间插件就可以了
大牛 时间插件是用上了,可查询数据与数据库匹配不上呀 数据库设计的时间戳,查询是查询的字符串
@liujingxing
时间戳查询的话,你要修改下你的控制器中的where() 方法
return [ //使用匿名函数 '时间戳字段名' => function($value) { return ['>=', '时间戳字段名', strtotime($value)]; }, ];
$value 就是你前台输入查询的时间,return 返回的话,就是你这个字段的查询处理方式
@liujingxing 感谢liu大牛 (^▽^)
@liujingxing 大神还想问问一个字段的搜索框可不可以搞两个,因为想搞时间区间查询 (^▽^)
大神还想问问一个字段的搜索框可不可以搞两个,因为想搞时间区间查询 (^▽^)
时间区间一样的呢,使用jquery的时间datetimepicker 插件,然后修改下你的 where 查询时间字段的 处理方式
return [ //使用匿名函数 '时间戳字段名' => function($value) { // 一般时间段查询的字符串为 2017-09-27 - 2017-09- 28 $arrValue = explode(' - ', $value); return ['between', '时间戳字段名', strtotime($arrValue[0]), strtotime($arrValue[1])]; }, ];
整体修改方案就是,前台可以顺便使用任何插件, 后台根据传递过来的数据进行处理就好了, 使用匿名函数的话,可以处理比较复杂的查询方式的
搜索框可以有两个么!我试了,都只能加一个
@liujingxing 感谢 已解决
怎么改选择后台记住登录后,不可以退出,改成可以退出啊
用户点击退出就退出了呢
@liujingxing 退出了还是在本页面没有到登录页面
生成模块 不会生成model? 这个是需要用gii 再次创建吗?
model 需要使用gii 生成呢!
好的 谢谢
添加的弹出框内的文本框要添加placeholder怎么添来着
搞定了呢!
退出 应该跳转到登录页面吧 你的这个退出他还在当前页面 需要刷新 才能跳转到登录页面!这个跳转代码要在哪里加呢
js 有一点问题 web/public/assets/js/common/iframe.js 中搜索#user-logout, $("#user-login")监听事件修改下$.post()方法,我把它改为用
$.ajax({ url: $(this).attr("href"), type: "POST" }).always(function(){ window.location.href = "/"; });
上传图片提示Class yii\image\ImageDriver does not exist,这个类放在哪里呀?我好像没有这个类
这个需要在 composer.json 中的require 中加入 "yurkinx/yii2-image": "^1.1", 然后composer update
为何一直都不行 请问该怎么做
配置一个虚拟目录到 backend/web/ 目录下
测试地址: http://39.106.77.46/
账号: admin
密码: 123456
测试地址已经更改: http://yii2.sh-jinger.com/
账号: admin
密码: admin888
老板,这个有没有集成图形报表的模块了?
有的,js 文件都有,自己引入就好了
这是怎么回事啊
感觉是你没有为后台单独配置一个虚拟目录吧!内容信息是通过ifram 加载的,是不是加载url 错误
@liujingxing 体验不好,在某个页面增删改查之后全部跳回到首页显示系统信息那个页面了,生成模块的好像生成不了模型
模型需要自己重新生成,导航栏目的新增和修改,页面需要重新加载,所以会回到首页!如果不需要的话,注释js 的跳转代码就好了
楼主,怎么控制排序的字段,我现在是把要排序的字段放在第一位才行
你是说导航栏目的排序还是?如果是导航栏目的排序字段,超级管理员应该是没有问题的!其他不是超级管理员的,需要修改
backend\models\Menus 类的 getMenusByPermissions 方法,这个方法对查询出来的导航没有进行排序处理;
如果是视图中你要在列表中把排序字段放到第一个,改下视图里面js 中配置的顺序就好了!
不是超级管理员的 导航栏目排序问题也已经修改好
多谢作者的无私。体验过一下很强大。我要将 public 放在 web 根目录那些 css jss 才能加载成功。我要改哪里?还有返回表数据和view数据的json 大概是什么结构的?
表格查询需要的数据:
{ "errCode": 0, // 错误码 成功必须为0 "errMsg": "操作成功", "data": { "sEcho": 1, // jquery.datatable 请求的次数 在 Yii::$app->request->post('sEach'), "iTotalRecords": 1, // 当页数据条数 "iTotalDisplayRecords": 1, // 数据总条数 "aaData": [ // 查询的数据 // ... { "id": "84", "title": "v bbvnvbnbvn" } ] } }
其他从处理方式:新增、修改、删除
{ "errCode": 0, // 错误码 成功必须为0 "errMsg": "操作成功", "data": {} // 数据信息 }