liujingxing 2017-03-10 15:16:32 40165次浏览 79条评论 24 6 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、首页
yii2-1.png

2、数据显示
yii2-2.png

3、模块生成(生成视图文件)
yii2-3.png

4、其他页面展示
yii2-4.png
yii2-5.png

觉得很赞
  • 评论于 2017-07-18 23:47 举报

    您好,请问在个别表单操作列中,通过m = mt({ operations : buttons 增加操作按钮,请问这个按钮如何调用自定义层的表单呢。或者表单是另外一个文件,不用获得事件进行跳新页面。达到和现有编辑 显示 同样效果。

    1 条回复
    评论于 2017-07-19 14:17 回复

    添加其他按钮的话 配置 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 同样 
       }
    }
    

    然后自己监听按钮点击事件,做相应的处理

  • 评论于 2017-07-27 21:18 举报

    QQ截图20170727211754.png
    老板怎么回事啊。vendor目录都没有。报错如下:

    ff.png

    3 条回复
    评论于 2017-07-28 18:18 回复

    需要使用composer 安装的!

    评论于 2018-01-08 15:47 回复

    composer怎么安装,能不能具体讲下

    评论于 2018-01-09 16:45 回复

    使用composer 安装的话,要确保你安装了composer , 在你的目录中 执行

    composer create-project liujx/yii2-app-advanced 你想要命名的目录,没有就是yii2-app-advanced
    

    命令就好了,后续的命令可以看https://packagist.org/packages/liujx/yii2-app-advanced

    如果你是git 下载下来的,可以到目录里面执行 composer install 命令,后续命令参照上面的

  • 评论于 2017-07-29 13:19 举报

    求教,对于不同角色,看到不同的菜单。有没有什么好的思路。目前在menu增加了一个状态位,取数据的时候做判断。但是增加角色得增加相应的状态位。这样还有个问题,两个不同角色有相同访问权限时候不好配置。征求下大家的思路。

    6 条回复
    评论于 2017-07-31 09:37 回复

    目前该套后台,导航栏目的显示是根据权限显示的,添加导航栏目的地址比如: menu/index 对应的权限是 menu/index;所以是满足你现在的需求的,不同的角色分配不同的权限,然后显示不同的导航栏目!
    还有一个方案就是: 角色表中有 data 字段,可以用来确定角色对应的导航,就是把角色对应的导航ID存入data中,显示导航的时候从用户的角色里面取就好了,这个方案是我最开始使用的,不过我觉的可以用权限控制,就没有必要添加额外的控制的了

    评论于 2017-08-04 22:20 回复

    按照第一种方法貌似不行。菜单没有按照权限显示,都显示menu表中的内容。

    评论于 2017-08-04 22:29 回复

    目前我想到的用 auth_item_child的 child 和 menu的url inner join关联下,where parent当前权限。这样显示权限就控制了。这个权限没有的menu也就不显示了。

    评论于 2017-08-04 22:57 回复

    不会的,第一种方法是没有问题,因为我导航栏目查询的时候,就是用 权限表中的 auth_item_child的值,然后去查menu表中的数据的!不知道你看角色的导航栏目是怎么看的,你要用拥有这个角色的管理员登录下看看,是不会有问题的!如果只是在权限列表中的详情中看的话,是有问题的!因为详情我处理的时候,是拿的当前登录用户的权限,而不是当前详情角色的权限,所以在详情显示的导航栏目是有问题的!这个问题我前几天就修改了!
    具体代码修改:

    // RoleController 控制器 actionView 方法 176 行
    $permissions = $this->getPermissions();
    改为
    $permissions = Yii::$app->authManager->getPermissionsByRole($name);
    
    评论于 2017-08-05 00:33 回复

    我改的backend\models 里面的setNavigation方法

    评论于 2017-08-05 13:41 回复

    功能实现都一样!不过我看setNavigation 方法是没有问题的, 因为menu信息就是通过权限去查的!而且本来就是不同角色对应的不同的导航栏目!目前我没有发现有什么问题,会导致你说的所有角色都是显示全部导航的问题!只有理员ID 为 1 的时候,不是走权限的获取导航栏目

  • 评论于 2017-08-11 17:05 举报

    我想添加这模板自带的一些控件,然后我发现比如图标,模板上是CSS继承font-awesome.min.css的。我也看了自己页面都加载3个font-awesome.min.css,当图标的CLASS还是没找到这个。3个中有一个我找不到在哪里加载进来的,除了layout和AppAsset哪里还又加载了一遍模板和相关文件

    1 条回复
    评论于 2017-08-13 11:31 回复

    这套模板是的前端资源都在: /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() 注册就好了

  • 评论于 2017-09-20 13:07 举报

    为什么有些表建的模块不能进行增删改查,而有些表又可以

    2 条回复
    评论于 2017-09-20 17:44 回复

    有错误没有?js 和 后台程序有出现错误没?

    评论于 2017-09-26 04:30 回复

    已经解决了 这个模板建表要带主键才行

    觉得很赞
  • 评论于 2017-09-20 13:21 举报

    还有联表查询的代码写在哪里哟,怎么写哟

    4 条回复
    评论于 2017-09-20 17:40 回复

    在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();
        }
    
    评论于 2017-09-26 04:32 回复

    感谢 感谢 还想问问搜索功能如何添加时间选择器呢?

    评论于 2017-09-26 11:30 回复

    保存在数据库的是时间戳,text框查询也只能输入时间戳查询,不能以年月日作为条件查询需要怎么做修改呢

    评论于 2017-09-27 17:21 回复

    你直接用 jquery的时间插件就可以了

    觉得很赞
  • 评论于 2017-09-28 09:16 举报

    大牛 时间插件是用上了,可查询数据与数据库匹配不上呀 数据库设计的时间戳,查询是查询的字符串

    5 条回复
    评论于 2017-09-28 09:18 回复
    评论于 2017-09-28 09:19 回复

    时间戳查询的话,你要修改下你的控制器中的where() 方法

    return [
     //使用匿名函数
     '时间戳字段名' => function($value) {
       return ['>=', '时间戳字段名', strtotime($value)];
    },
    ];
    
    评论于 2017-09-28 09:25 回复

    $value 就是你前台输入查询的时间,return 返回的话,就是你这个字段的查询处理方式

    评论于 2017-09-28 11:04 回复

    感谢liu大牛 (^▽^)

    评论于 2017-09-28 11:40 回复

    大神还想问问一个字段的搜索框可不可以搞两个,因为想搞时间区间查询 (^▽^)

    觉得很赞
  • 评论于 2017-09-28 11:40 举报

    大神还想问问一个字段的搜索框可不可以搞两个,因为想搞时间区间查询 (^▽^)

    1 条回复
    评论于 2017-09-28 13:39 回复

    时间区间一样的呢,使用jquery的时间datetimepicker 插件,然后修改下你的 where 查询时间字段的 处理方式

    return [
     //使用匿名函数
     '时间戳字段名' => function($value) {
     // 一般时间段查询的字符串为 2017-09-27 - 2017-09- 28
     $arrValue = explode(' - ', $value);
       return ['between', '时间戳字段名', strtotime($arrValue[0]), strtotime($arrValue[1])];
    },
    ];
    

    整体修改方案就是,前台可以顺便使用任何插件, 后台根据传递过来的数据进行处理就好了, 使用匿名函数的话,可以处理比较复杂的查询方式的

  • 评论于 2017-09-28 17:33 举报

    搜索框可以有两个么!我试了,都只能加一个

    1 条回复
    评论于 2017-09-29 13:50 回复

    感谢 已解决

  • 评论于 2017-09-30 18:22 举报

    怎么改选择后台记住登录后,不可以退出,改成可以退出啊

    2 条回复
    评论于 2017-10-09 15:17 回复

    用户点击退出就退出了呢

    评论于 2017-10-11 16:00 回复

    退出了还是在本页面没有到登录页面

  • 评论于 2017-10-09 15:36 举报

    生成模块 不会生成model? 这个是需要用gii 再次创建吗?

    2 条回复
    评论于 2017-10-10 11:14 回复

    model 需要使用gii 生成呢!

    评论于 2017-10-10 15:36 回复

    好的 谢谢

  • 评论于 2017-10-11 15:44 举报

    添加的弹出框内的文本框要添加placeholder怎么添来着

    1 条回复
    评论于 2017-10-11 16:53 回复

    搞定了呢!

  • 评论于 2017-10-12 10:26 举报

    退出 应该跳转到登录页面吧 你的这个退出他还在当前页面 需要刷新 才能跳转到登录页面!这个跳转代码要在哪里加呢

    1 条回复
    评论于 2017-10-12 11:25 回复

    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 = "/";
    });
    
  • 评论于 2017-10-12 16:12 举报

    上传图片提示Class yii\image\ImageDriver does not exist,这个类放在哪里呀?我好像没有这个类

    1 条回复
    评论于 2017-10-13 09:22 回复

    这个需要在 composer.json 中的require 中加入 "yurkinx/yii2-image": "^1.1", 然后composer update

  • 评论于 2017-10-21 21:31 举报

    微信图片_20171021212950.png
    微信图片_20171021213013.png
    为何一直都不行 请问该怎么做

    1 条回复
    评论于 2017-10-22 13:17 回复

    配置一个虚拟目录到 backend/web/ 目录下

  • 评论于 2017-11-22 15:45 举报

    测试地址: http://39.106.77.46/
    账号: admin
    密码: 123456

    1 条回复
    评论于 2018-01-03 09:58 回复

    测试地址已经更改: http://yii2.sh-jinger.com/
    账号: admin
    密码: admin888

  • 评论于 2017-12-10 12:05 举报

    老板,这个有没有集成图形报表的模块了?

    1 条回复
    评论于 2017-12-11 09:37 回复

    有的,js 文件都有,自己引入就好了

  • 评论于 2017-12-29 11:33 举报

    QQ图片20171229115124.png
    这是怎么回事啊QQ图片20171229113245.png

    3 条回复
    评论于 2017-12-29 22:25 回复

    感觉是你没有为后台单独配置一个虚拟目录吧!内容信息是通过ifram 加载的,是不是加载url 错误

    评论于 2018-01-05 11:34 回复

    体验不好,在某个页面增删改查之后全部跳回到首页显示系统信息那个页面了,生成模块的好像生成不了模型

    评论于 2018-01-05 13:13 回复

    模型需要自己重新生成,导航栏目的新增和修改,页面需要重新加载,所以会回到首页!如果不需要的话,注释js 的跳转代码就好了QQ图片20180105131323.png

  • 评论于 2018-01-08 12:52 举报

    楼主,怎么控制排序的字段,我现在是把要排序的字段放在第一位才行

    2 条回复
    评论于 2018-01-09 16:33 回复

    你是说导航栏目的排序还是?如果是导航栏目的排序字段,超级管理员应该是没有问题的!其他不是超级管理员的,需要修改
    backend\models\Menus 类的 getMenusByPermissions 方法,这个方法对查询出来的导航没有进行排序处理;
    如果是视图中你要在列表中把排序字段放到第一个,改下视图里面js 中配置的顺序就好了!

    评论于 2018-01-10 09:45 回复

    不是超级管理员的 导航栏目排序问题也已经修改好

  • 评论于 2018-01-12 11:37 举报

    多谢作者的无私。体验过一下很强大。我要将 public 放在 web 根目录那些 css jss 才能加载成功。我要改哪里?还有返回表数据和view数据的json 大概是什么结构的?

    1 条回复
    评论于 2018-01-12 17:33 回复

    表格查询需要的数据:

    {
      "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": {}                       // 数据信息
    }
    
您需要登录后才可以评论。登录 | 立即注册