2权限管理模块
在线教育平台
报错了,错误如下:
 
这是因为项目使用了redis,而在Laravel中使用redis,必须要安装predis这个安装包。
这里报错的原因是因为我们在项目初始化的时候把项目的缓存方法和session存储方式设置成了 redis存储了。
所以,我们安装predis即可。
composer require predis/predis
cmd命令行:
 
1. 权限管理模块
分析:
要实现权限管理模块,我们使用的是RBAC,所以角色的外键会存储在管理员表中,所以我们的开发步骤:
实现角色的增删查改,
管理员的增删差改,
权限的增删查改,
登录退出
防FQ 和 权限的检测 [ 展示当前用户的权限菜单 ]
1.1 角色管理
步骤:
1. 调整菜单,修改链接地址
2. 显示列表页面,完成列表页
3. 再显示添加页面,完成添加页
4. 完成删除功能
5. 完成编辑功能
功能:
1. ajax( ajaxform前端 )
2. layer弹窗插件
3. 富文本编辑器
1.1.1 调整菜单,修改链接地址
1.1.1.1 创建对应的控制器和路由地址
php artisan make:controller Admin\RoleController --resource
 
控制器代码:
 
路由,代码:
 
1.1.1.2 修改链接链接地址
resource/views/admin/index.blade.php

效果:
 
1.1.2 显示列表页面,完成列表页功能
1.1.2.1 复制模板到项目中
 
效果:
 
调整样式(模板集成)
代码:
 
效果:
 
1.1.2.2 控制器对数据进行查询,前端展示数据
目前我们并没有实现角色添加功能,所以我们需要列出列表页数据, 需要先增加一些测试数据。以往的时候,我们是直接到数据库中新增数据,但是这种添加数据的方式是手动的,所以会出现反复添加删除数据,影响效率。
Laravel中提供一种添加测试数据的方式:Data Seeder ( 填充数据种子 )
填充数据种子,其实就是一个类文件,这个类中的代码就是使用了数据操作(这种操作是我们手写的)添加数据,但是它的添加是使用工匠指令来添加。所以,我们可以实现数据的不断快速填充。
使用填充数据种子的步骤;
1.1.2.2.1 创建一个填充数据种子类
php artisan make:seeder 填充类名
填充类名建议大驼峰时,以表名为主!
例如,我们需要给role表添加测试数据,那么建议类名为RoleTableSeeder。
cmd命令行:

代码:
 
那么,接下来,我们就可以在填充种子类中的run方法里面,写上对应的添加数据操作。
要使用模型的添加操作,则必须先创建模型。
cmd命令行:
 
代码:
 
在填充数据种子类文件中,使用模型添加角色。
代码:
 
接下来,在命令行中使用工匠指令,执行数据填充种子。
执行单个数据填充种子:
php artisan db:seed --class=类名
执行多个数据填充种子,则需要把要执行的填充种子的类名写到 databases/seeds/DatabaseSeeder.php,使用call方法来执行。
最后命令:
php artisan db:seed
命令行:
 
效果:
 
接下来,我们就使用DataTables数据表格插件来显示列表数据
1.1.2.3 DataTables数据表格插件【见附件详解】
插件的使用效果,如下:
 
DataTables是一个开源的前端数据展示的jQuery插件。
1.1.2.3.1 使用步骤
- 引入插件的js文件![]()  
- 使用Datatables
视图:
 
视图js代码:
 

上面是官网推荐的写法
路由代码:
 
控制器代码:
 
1.1.3 显示添加页面,完成添加页
1.1.3.1 调整链接地址
 
效果:
 
1.1.3.2 显示视图
 
效果:
 
1.1.3.3 调整页面和表单
1.1.3.3.1 调整页面
 
效果:
 
1.1.3.3.2 调整表单
 
1.1.3.4 ajax发送表单数据
我们这里使用ajaxform的jQuery表单上传数据插件,这个插件可以帮我们快速简便的实现ajax数据提交(包括了ajax文件上传功能),甚至我们不需要针对这个插件做任何的配置,可以直接使用,它可以自动帮我们提取表单中的属性和数据。
接下来,我们使用下这个插件。
注意,我们的h-ui.admin框架内置了这个插件,但是给同学们的模板中,这个插件没有。
我这里在附件中提供了,把它放置在lib目录下即可。
 
引入ajaxform插件到添加页面中
 
效果:
 
1.1.3.5 控制器接收数据并校验
 
效果:
 
1.1.3.6 保存到数据库中并返回操作,前端使用layer弹窗进行提示操作结果。
控制器:
 
视图:
 
1.1.4 完成删除功能
控制器:
 
视图:
 
1.1.4.1 完善一个细节,假删除
在开发中,往往都不会一下子把数据给删除掉,因为这种操作很容易造成一个无法挽回的损失。
 
在Laravel中已经内置了软删除功能,给我们了,同时我们之前使用数据迁移创建的 softDeletes()方法创建的字段就是用于给Laravel的软删除。
硬删除 = 物理删除
软删除 = 假删除
实现思路:后台数据表,存储一个删除的状态, 通过这个状态的改变来区分数据是否被删除了。
在Laravel中,软删除的使用需要借助数据模型,通过在数据模型中加载对应的方法才能使用。
 
代码:
 
效果:
 
当我们在Laravel中开启的软删除以后,get就会在查询的时候把所有deleted_at不为null的数据全部排除掉,同时,模型的delete 方法就不再是删除数据,而是改成给数据表记录添加一个 deleted_at的字段值了。
那么,我们怎么查询出所有的被删除的数据呢?
$role->withTrashed()->where('id', 1)->restore();//恢复指定的软删除录
$role->withTrashed()->restore(); //恢复所有的软删除记录
 
1.1.5 完成编辑功能
1.1.5.1 调整链接地址
代码:
 
效果:
 
1.1.5.2 显示页面并调整页面和表单
1.1.5.2.1 控制器加载视图
 
把角色添加页的视图复制一份,并修改文件名为edit.blade.php
 
代码:
 
1.1.5.3 ajax发送数据,控制器接收数据并保存
 

1.2 管理员管理
可以参考角色的管理功能,直接拿过来调整代码。
1.2.1 创建管理员的资源控制器和资源路由
php artisan make:controller Admin/AdminController --resource
命令行:
 
路由:
 
1.2.2 调整管理员的列表地址
resources/views/index/index.blade.php,代码:
 
1.2.3 创建Admin数据模型
php artisan make:model Models\Admin
命令行:
 
这里的模型代码和我们之前做的角色模型是差不多,所以我们直接把角色模型Role中的代码复制到管理员模型Admin。
代码:
 
1.2.4 添加测试数据
我们之前使用了填充数据种子技术来添加了测试数据,但是这种填充方式,是我们自己定义的,所以无法填充很多数据,而且这种方式生成的数据,不够真实。
所以Laravel为了让我们可以生成更多,更拟真的数据,内置了Faker的工具类库,这个工具类库可以帮我们很方便的实现测试数据的生成。
手册:
 
上面的模型工厂,内部调用的就是Faker类。
github上面的Faker支持生成的数据类型:
https://github.com/fzaninotto/Faker#fakerprovideren_ustext
Laravel已经默认给我们内置了Faker安装包,所以我们可以直接使用。
使用有两种方式:
1.2.4.1 在数据填充种子类文件中使用
1.2.4.1.1 创建一个数据填充种子类文件
php artisan make:seeder AdminTableSeeder
命令行:
 
代码:
 
直接在命令行中调用对应的数据填充种子文件
 
效果:
 
1.2.4.2 在模型工厂文件中使用
模型工厂指代的就是database/Factories/ModelFactory.php文件。
在模型工厂中声明我们要创建的数据代码:
 
接下来,我们可以直接到命令行中通过进入模型工厂的psy的界面中使用php代码来调用工厂模型。
php artisan tinker
cmd命令行:
 
上面这种情况就是进入PHP的控制台,这个控制台里面可以写上PHP代码。
要使用这个命令行的控制器,我们的PHP环境必须保证,要开启的pdo_sqlite.dll的扩展。
接下来,我们直接在控制台中调用模型工厂生成模型的测试数据
 

1.2.5 显示列表页数据
把角色列表的模板复制到管理员的模板目录中
 
控制器代码:
把RoleController的所有代码复制到AdminController中,
修改以下:
- 把“角色”改成“管理员”
- 把“RoleController” 改成 “AdminController”
- 把“App\Models\Role” 改成“App\Models\Admin”
- 把 “return view(‘admin.role.’) 中的“admin.role” 改成 “admin.admin”
- 把“Role $role”改成“Admin $admin”
- 把“$role” 改成 “$admin”
- 把“roleInfo” 改成 “adminInfo”
- 把“new Role” 改成 “new Admin”
- 把“role_name” 改成“username”
接下来,访问管理员的列表页。
 
1.2.5.1 修改视图中的代码和文字
- 把“管理员-角色”改成 “管理员”
- 把“admin_role”改成“admin”
- 把“角色”改成“管理员”
- 把页面中所有的”role”改成“admin”
效果:
 
接下来,我们需要查询对应的数据显示在列表页中,
控制器代码:
 
调整模型中管理员和角色的模型关系
 
视图代码:
 


效果:
 
1.3 管理员添加
webuploader
七牛云存储
1.4 管理员登录
1.5 权限添加
1.5.1 输出当前管理员拥有的权限列表
1.5.2 使用中间件来判断管理员的权限
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号