A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

十一、商品回收站功能
1、由于之前的商品删除并不是真正意义上的删除,所以应该增加一个回收站机制来使商品完成还原和彻底删除的功能。
2、首先在控制器中增加方法来实现接收已被删除的商品数据,控制器中要获取已经删除的商品的信息,通过数据表中表示已经删除的字段来获取到已经删除的商品信息,然后将数据在回收站的模板显示出来。
3、由于回收页面的显示与首页列表显示的页面相似,可以直接复制之前的index页面粘贴为trash页面作为商品回收页面,然后将页面中的查看按钮删除,修改编辑和删除按钮,改为还原和彻底删除按钮,并使用U函数修改之前的链接地址。
4、然后在可控制器中增加方法来实现数据还原功能,通过get方法传递过来的ID来确定要操作的商品,来执行还原功能。同时在模型中增加方法来实现还原功能,同样通过get方法来确定要操作的商品。
5、实现商品的彻底删除,修改模板文件中彻底删除的链接,使用U函数生成地址,在控制器中增加方法来执行彻底删除操作,通过get方法来获取到要操作的商品,然后执行删除操作。
6、在模型中增加方法来实现商品的彻底删除,商品的删除需要删除商品的图片、拓展分类和基本信息。在模型的方法中首先删除商品的图片信息,图片要删除原图片和制作的缩略图,然后通过连贯操作来实现对商品的拓展分类和商品信息的删除。
十二、RBAC权限管理
1、所谓RBAC权限,就是当有有用户访问页面的方法的时候,系统需要断用户是否登录,没有登录提示用户登录,登录过后要通过基础控制器进行判断所登录的用户对应的角色,并根据不同角色拥有的不同权限来判断用户所访问的页面的方法是否在自己的权限中,没有权限则无法访问。同时,当通过基础控制器判断出所登录的用户角色属于超级管理员,那么将不需要进行权限的判断,直接拥有所有的权限。而判断的方式就是通过I函数中get方法获取用户输入的URL地址的控制器和方法名字来进行的。
2、关于RBAC具体要实现的功能,实现对用户和角色的管理,即对用户和角色进行增删改查。实现权限的增删改查,能够给用户赋予角色,给角色赋予权限,并根据不同用户不同角色的不同权限来显示出导航菜单。同时还要预留出一个默认的超级管理员角色,并有一个超级管理员用户,用来方便管理其他所有事务。
3、针对以上,需要创建相应的五张表,分别是管理员表、角色表、权限表、管理员角色中间表和角色权限中间表。管理员表即用户表,每个登录的用户都是一个管理员,对应一个ID。角色表相当于一个分组,不同的管理员的对应的角色不同,所以管理员角色中间表就是用来连接控制管理员和角色之间。权限表是用来分配不同权限的,角色权限中间表就是用来管理控制两张表的。
4、角色的管理,以上表创建完成之后,可以从角色的管理开始完善。首先应该实现添加用户的功能。首先创建控制器,在控制器中添加add方法用来显示模板。然后在视图文件下创建相应的角色视图目录。而添加用户功能与之前添加分类的效果类似,可以将之前分类下面的模板文件复制粘贴过来使用。
5、然后创建相应的角色模型,继承公共模型,在模型中定义一个数组,包括角色表中的字段,并使用$_validate来进行字段验证,由于角色的添加只需要添加用户名,所以验证时也只需要验证用户名是否填写,而且角色名不能和之前的用户名重复。
6、完成验证之后将数据写入数据库中保存,在之前的角色控制器中,实现将数据写入数据库中的操作。
7、角色添加完成后,需要在前台的页面中显示出来,所以应该在控制器中增加方法来实现数据在模板文件中的显示,通过assign和display方法对模板进行渲染,使数据显示在页面上。
8、在完成角色的添加功能之后,就要实现角色的删除功能。首先修改模板文件中删除按钮的连接,通过U函数生成地址。然后在控制器中增加方法来执行删除操作,通过I函数中get方法获取到要删除的角色的ID,并执行判断,因为有一个需要默认预留出来的超级管理员,所以判断条件应该是ID大于等于1。然后使用D函数中的remove方法,将角色删除。然后在模型中增加remove方法来实现对角色的删除,使用TP自带的连贯操作来完成删除角色。
9、实现角色的编辑功能,相同于删除操作,首先在模板文件中修改编辑按钮的链接地址,同样使用U函数生成地址。然后在控制器中增加方法来执行编辑操作,编辑操作同样要进行判断,不能修改超级管理员。通过I函数中的get方法获得要编辑的对象的ID,来实现编辑操作。要注意,进行编辑操作时,需要将之前的数据显示在模板上来方便用户的查看和修改,所以应该首先获取到要修改的角色的信息,并通过assign和display方法将数据渲染在模板上。并在用户执行完修改操作后,将修改后的数据写入数据库,自动跳转到首页以便用户查看。
10、完成了以上对角色的操作之后,应该完善管理员的管理功能。。首先创建控制器并添加方法,方法中通过D函数中的查询语句select查询出所有的角色信息,并渲染模板。方法中同时实现添加功能来执行添加操作。然后创建模型,模型中要接收传递过来的值,通过变量接收值过后,通过$_validate方法来实现自动验证,验证用户名和密码不能为空,并且用户名不能重复。由于密码是经过MD5加密的,所以可以通过$_auto方法来实现自动完成。然后通过TP中的钩子函数,实现角色管理员中间表的入库操作。
11、添加功能完成之后,应该增加方法来将数据显示在模板。在控制器中增加方法,在获取到所有数据之后,通过assign和display方法渲染模板。
12、然后在模型中增加方法来获取所有数据,此时需要连接角色表、管理员表和管理员角色中间表的三表查询,具体的原生SQL语句为select a.*,c.role_name from jx_admin aleft join jx_admin_role b on a.id=b.id left join jx_role c on b.id=c.id;使用TP中的连贯操作将数据查询出来,并实现分页功能。然后修改模板文件,添加volist标签来循环显示出数据。
13、实现管理员的删除操作,首先在控制器中增加方法辣执行管理员的删除操作,通过I函数中的get方法获取要操作的管理员的ID,同时要进行判断,不能删除管理员。调用remove方法来执行删除操作。在模型中添加remove方法来实现删除操作。由于该删除方法较为危险,需要删除用户信息和角色信息,可以通过事务的方式来执行,如果有一个执行失败,将回滚到之前未删除的数据,两者都删除成功后才会完成事务。
14、最后实现管理的编辑操作,首先创建控制器来加载模板文件,通过I函数中对的get方法来获取要操作的ID,并查询到用户名密码以及对应对的角色ID。然后在模型中增加方法通过连贯操作来获取数据。最后修改模板文件,通过volist标签将所有的角色循环遍历输出在下拉选择框中。同时增加隐藏域来获取之前的信息,并将信息渲染在模板文件中。
15、在控制器中增加方法来实现将修改的数据写入数据库中。同时增加判断,不能修改超级管理员。判断通过后将数据写入数据库中并跳转到首页。
16、完成权限管理功能,由于权限的管理类似与之前的分类,所以可以将之前分类的控制器和模型复制粘贴为权限管理的控制器和模型文件。并修改其中的类名和方法名,并将实例化的模型和数据表名字改为对应的权限名。然后修改模板文件,将其中的分类信息都改为权限的形式。将所有的方法如添加删除编辑功能等的方法名修改为对应的权限名。

3 个回复

正序浏览
黑马南京 来自手机 初级黑马 2017-11-28 10:24:36
板凳
66666棒棒
回复 使用道具 举报
回复 使用道具 举报
沙发沙发
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马