商城3
用户角色分配
功能需求:在后台添加用户信息的时候,我们需要为用户分配对应的角色信息
- 在UserController.class.php控制器文件的add方法里面获取所有的角色信息
 
- 在add.html用户添加视图页面展示所有的角色信息
 
效果:
 
用户列表
功能需求:在为用户分配对应的角色后,需要在用户的列表页展示用户的角色的名称信息,默认只能展示用户的role_id。所以我们需要连表获取用户的角色名称信息。
 
原生SQL查询用户的角色信息:
 
- 在UserController.class.php控制器的lst方法里面进行连表操作获取用户的角色信息
 
- 在lst.html页面展示用户的角色信息
 
3. 效果
 
4. 如果 表与表之间的关系(借助: MySQL workbench 软件是专门进行E-R模型绘制的)
 
完善登录
功能需求:在用户成功登录后,需要更新用户的登录时间和IP地址
- 在UserModel.class.php的login方法里面调用一个_updateUserInfo方法更新用户的信息
 
- 定义一个_updateUserInfo方法更新用户的登录信息
 
3. 效果
 
权限验证
实现功能需求:
在后台的用户登录之后,在用户访问某个操作之前,需要验证该用户是否存在对应的权限,如果存在,则可以进行访问显示,如果不存在权限,则调回回某个页面(后台首页)。
实现的思路:
- 在用户成功登录后,需要根据用户的角色role_id去角色表里面查询角色对应的role_id_list(权限id字符串)
- 根据上一步查询出来的role_id_list我们需要去权限表里面查询对应的权限信息(权限的名称、权限的控制器、权限的方法),查询出对应的权限信息后,需要保存到session里(因为后面还要访问好多页面)面
- 在访问某个操作(控制器下的方法)的时候需要将当前的控制器和方法去session里面进行对比,如果存在,则可以进行操作;但是需要注意以下几点:- 用户是否是超级管理员(如果是超级管理员,则不受到权限的限制)
- 如果是后台的公共的方法(例如后台的首页,则默认所有的人都可以访问)
 
实操:
- 在UserModel.class.php模型的login方法里面在用户成功登录后记录用户的权限信息
 
- 定义一个方法在用户成功登录后,根据role_id查询数据role_id_list,然后获取用户的权限信息 [ ‘User/add’ , ’User/edt’ ]
 

- 在FatherController.class.php的构造方法里面进行验证
 
- 让需要做权限验证的控制器,继承FatherController控制器
 
权限菜单[重点]
功能需求:
在不同的用户登录后台后,在首页的左侧展示的菜单应该是不一样的。这个时候我们需要根据用户的角色信息,取出用户的权限菜单。
实操:
- 在UserModel.class.php模型文件的login方法里面获取用户的权限菜单信息
 
- 在_putAuthAndMenuToSessionByRoleId方法里面获取菜单信息
 

 
 
- 在left.html视图页面获取菜单信息
 
- 效果
 
上面已经完成一个rbac模块,接下来完成商品模块
商品类型模块
在之前的ecshop的使用过程中,我们知道一个商城里面是存在商品类型。到时候还要做商品类型下的属性;还要实现商品分类,最后一个商品的添加。
表设计
type_id 主键
type_name 商品类型名称
mark_up 商品类型的备注信息
 
商品类型添加
- 增加一个TypeController.class.php控制器文件,添加一个add方法
 
- 增加一个add.html视图页面
 
效果
 
- 增加一个TypeModel.class.php模型文件
 
商品类型展示
1.增加一个TypeController.class.php控制器文件,添加一个lst方法
 
2.增加一个lst.html视图页面
 

效果

商品属性
每个商品类型下面是存在对应的商品的属性信息,并且属性是可以分类:唯一属性和单选属性。并且属性的属性值填写的时候也是可以进行不同的操作:手工的填写和列表选择。
属性类型:唯一属性和单选属性
属性的录入方式:手工的填写和列表选择
表设计
attr_id 主键ID
attr_name 属性名称
type_id 所属的商品类型ID
attr_type 属性的类型:0代表是单选 1代表是唯一
attr_input_type 属性的录入方式:0代表是手工 1代表是列表选择
attr_values 属性的可选值,当属性的录入方式为列表选择的时候对应的可选值,到时候使用逗号进行分割
 
属性添加
1.增加一个AttributeController.class.php控制器文件,添加一个add方法
 
2.增加一个add.html视图页面
 
效果
 
3.增加一个AttributeModel.class.php模型文件
 
4.优化:为属性的可选值做一个禁用操作
 
属性展示
到时候属性的展示是在商品类型下的列表页进行展示(展示某个商品类型下的属性)
- 在商品类型的lst.html展示页面增加一个属性列表
 
效果
 
- 在TypeController.class.php控制器文件增加一个getAttr方法,获取对于商品类型下的属性
 
- 增加一个getAttr.html视图文件,展示对应商品类型下的属性信息
 
效果
 
扩展
无刷新获取商品类型属性
- 在TypeController.class.php控制器文件的getAttr方法里面获取所有的商品类型
 
- 在getAttr.html视图页面展示商品类型
 
效果
 
- 在属性列表页为商品类型下拉框绑定change事件
 
注意:上面使用的 `` 反引号这种方式拼接字符串是es6提供的模板字符串语法。需要在高版本的浏览器才可以支持
http://es6.ruanyifeng.com/#docs/string#模板字符串
- 在TypeController.class.php控制器文件增加ajaxGetAttr方法
 
vuejs扩展
主要是教大家去快速的去学习一些新的东西。
简介
- 什么是vuejs?
答: vuejs 是由国内的一个大牛(尤大大、尤雨溪),之前是在google lab实验室进行开发的。现在vuejs产品已经正式走入国际市场。(国外的市场很大)国内大力推广(angularJs 兼容不好),并且该产品是一个MVVM的产品。
- 什么是MVVM?
答:在我们的后端里面,有MVC的这种开发思想,但是由于现在前端技术非常的火热,也催生出来了一些列的前端框架,前端里面的对传统的MVC进行单独的进行解读,出现一些列的变种叫法:MVVM MVP MVX MV* 都是MVC的思想。
分析:MVVM == MVC
思考: C起的作用? 协调作用,是否实例化模型,是否载入视图
下面的这个图,是官方给的一个MVVM的概图:
 
使用
- 下载vue.js代码(注意: 现在目前vuejs分为两个大版本 1.x系列 2.x系列)
 
https://github.com/vuejs/vue/releases
 
- 页面上引入即可,然后使用vuejs语法进行数据的渲染
 
vuejs无刷新渲染商品类型属性
- 页面上引入vue.js
 
- 在页面上定义一个区域,交给vuejs进行管理
 
3. 在getAttr.html视图页面为下拉框定义事件
 
4. 实例化vue.js, 发送ajax获取数据
 
- 在TypeController.class.php控制器文件增加ajaxGetAttr方法
 
6. 在页面上使用v-for指令遍历数据
 
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号