/ yii2

yii2-admin

搭建后台管理系统

composer 安装以下包:

使用主题 AdminLTE Asset Bundle

yii2-adminlte-asset更是一款基于 yii2 框架进行开发的后台主题模版,全响应式的哦,出门带手机即可登录进行管理。

安装配置好上面的 mdmsoft/yii2-admin,我们就拥有了 rbac 的 GUI,访问模块为 /admin。如果还需要一个美观的后台主题模板,就需要安装 dmstr/yii2-adminlte-asset

https://github.com/dmstr/yii2-adminlte-asset

vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app 复制重命名为 backend\themes\adminlte

打开 backend\config\main.php 文件:

'components' => [
    'view' => [
         'theme' => [
             'pathMap' => [
                '@app/views' => '@app/themes/adminlte',// 注意这里 @app 和 @backend 都可以
             ],
         ],
    ],
],

这样就可以直接修改 backend\themes\adminlte 的文件来微调主题了。

如果一切ok,则可以将 vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app 覆盖掉默认的 backend\views 文件,然后移除上述配置。

这时刷新页面,就会发现新的主题模板

mdmsoft/yii2-admin —— RBAC Manager for Yii 2

GUI manager for RABC (Role Base Access Control) Yii2. Easy to manage authorization of user

https://github.com/mdmsoft/yii2-admin

我们配置好 authManager ,打开 common\config\main.php 文件,在 components 数组中加入 authManager 组件,注意authManager的配置不要写错哦

//authManager有PhpManager和DbManager两种方式,    
//PhpManager将权限关系保存在文件里,这里使用的是DbManager方式,将权限关系保存在数据库.    
"authManager" => [        
    "class" => 'yii\rbac\DbManager',// 使用 MySQL 数据库
],

生成 Yii2 RBAC 自带的数据表,接下来我们又要用到 migrate 生成官方自带的数据表了:

./yii migrate --migrationPath=@yii/rbac/migrations/
  • auth_item:用于存储角色、权限和路由
  • auth_item_child:角色-权限的关联表
  • auth_assignment:用户-角色的关联表
  • auth_rule:用途未知

mdmsoft/yii2-admin 除了包含对上述对应数据表的 MVC 代码外,还包数据表 usermenu 的 migration 和 MVC 代码。

如果需要用到 menu manager

./yii migrate --migrationPath=@mdm/admin/migrations

yii2-amdin 的 menu 会默认启用缓存,如果菜单不更新,可以试试新添加一个菜单来跳过缓存数据。

http://localhost/path/to/index.php?r=admin
http://localhost/path/to/index.php?r=admin/route
http://localhost/path/to/index.php?r=admin/permission
http://localhost/path/to/index.php?r=admin/menu
http://localhost/path/to/index.php?r=admin/role
http://localhost/path/to/index.php?r=admin/assignment
http://localhost/path/to/index.php?r=admin/user

grid view 中

use mdm\admin\components\Helper;

[
    'class' => 'yii\grid\ActionColumn',
    'template' => Helper::filterActionColumn('{view}{update}{delete}'),
],

总结

实际使用中,mdmsoft/yii2-admin@2.8 的 autocomplete 会显示在左上角。
然而配合 dmstr/yii2-adminlte-asset@2.6.0 就会无法显示完整。

这里要以 mdmsoft/yii2-admin@2.8 为主,选择与之兼容的 dmstr/yii2-adminlte-asset 版本。

是 我也遇到这个问题了,是因为Jquery UI 1.11.4 and jquery 3.0 的版本兼容问题,我修复的方案是复制了一个 v2.2.4的jquery替换了3.0的版本

http://www.yiichina.com/tutorial/571?sort=desc

'components' => [
    'assetManager' => [
        'assetMap' => [
            // jquery v3.2.1 和 jQuery UI 1.11.4 版本冲突 
            // https://stackoverflow.com/questions/37914869/jquery-ui-error-f-getclientrects-is-not-a-function
            'jquery.js' => '@web/js/jquery/jquery.js', 
            'jquery.min.js' => '@web/js/jquery/jquery.js',
        ],
    ]
]

或者使用 cdn

'components' => [
    'assetManager' => [
        'bundles' => [
            // 使用 CDN 覆盖默认的资源包
            'yii\web\JqueryAsset' => [
                // 因为是外部资源,所以需要覆盖掉原有的值 '@bower/jquery/dist'
                'sourcePath' => null,
                // 覆盖原有值 'jquery.js'
                'js' => ['//cdn.bootcss.com/jquery/2.2.4/jquery.min.js']
            ],
        ],
    ]
]

AFC 是yii简单的访问控制机制,只能针对已登录、未登录的用户作访问控制,无法实现登录后的按权限控制访问;

权限是 RBAC 基于角色的权限访问控制(Role-Based Access Control)的组成部分;

yii2-admin 是 RBAC 的一个图形化配置工具,只是一个壳;

adminlte 是一套前端样式,跟上面这些没半毛钱关系,它只是一套网站模板。