商城3

用户角色分配

功能需求:在后台添加用户信息的时候,我们需要为用户分配对应的角色信息

  1. UserController.class.php控制器文件的add方法里面获取所有的角色信息

 

 

 

  1. add.html用户添加视图页面展示所有的角色信息

 

 

效果:

 

 

用户列表

功能需求:在为用户分配对应的角色后,需要在用户的列表页展示用户的角色的名称信息,默认只能展示用户的role_id。所以我们需要连表获取用户的角色名称信息。

 

 

原生SQL查询用户的角色信息:

 

 

 

  1. UserController.class.php控制器的lst方法里面进行连表操作获取用户的角色信息

 

 

 

  1. lst.html页面展示用户的角色信息

 

 

 

3. 效果

 

 

 

4. 如果 表与表之间的关系(借助: MySQL workbench 软件是专门进行E-R模型绘制的)

 

 

 

完善登录

功能需求:在用户成功登录后,需要更新用户的登录时间和IP地址

 

  1. UserModel.class.phplogin方法里面调用一个_updateUserInfo方法更新用户的信息

 

 

 

  1. 定义一个_updateUserInfo方法更新用户的登录信息

 

 

 

3. 效果

 

 

 

权限验证

实现功能需求:

在后台的用户登录之后,在用户访问某个操作之前,需要验证该用户是否存在对应的权限,如果存在,则可以进行访问显示,如果不存在权限,则调回回某个页面(后台首页)。

 

实现的思路:

  1. 在用户成功登录后,需要根据用户的角色role_id去角色表里面查询角色对应的role_id_list(权限id字符串)
  2. 根据上一步查询出来的role_id_list我们需要去权限表里面查询对应的权限信息(权限的名称、权限的控制器、权限的方法,查询出对应的权限信息后,需要保存到session(因为后面还要访问好多页面)
  3. 在访问某个操作(控制器下的方法)的时候需要将当前的控制器和方法去session里面进行对比,如果存在,则可以进行操作;但是需要注意以下几点:
    1. 用户是否是超级管理员(如果是超级管理员,则不受到权限的限制)
    2. 如果是后台的公共的方法(例如后台的首页,则默认所有的人都可以访问)

 

实操:

  1. UserModel.class.php模型的login方法里面在用户成功登录后记录用户的权限信息

 

 

 

  1. 定义一个方法在用户成功登录后,根据role_id查询数据role_id_list,然后获取用户的权限信息  [ ‘User/add’   ,  ’User/edt’ ]

 

 

 

 

  1. FatherController.class.php的构造方法里面进行验证

 

 

 

  1. 让需要做权限验证的控制器,继承FatherController控制器

 

 

 

权限菜单[重点]

功能需求:

在不同的用户登录后台后,在首页的左侧展示的菜单应该是不一样的。这个时候我们需要根据用户的角色信息,取出用户的权限菜单。

 

实操:

  1. UserModel.class.php模型文件的login方法里面获取用户的权限菜单信息

 

 

 

  1. _putAuthAndMenuToSessionByRoleId方法里面获取菜单信息

 

 

 

 

 

 

 

  1. left.html视图页面获取菜单信息

 

 

 

  1. 效果

 

 

上面已经完成一个rbac模块,接下来完成商品模块

 

商品类型模块

在之前的ecshop的使用过程中,我们知道一个商城里面是存在商品类型。到时候还要做商品类型下的属性;还要实现商品分类,最后一个商品的添加。

 

表设计

type_id 主键

type_name 商品类型名称

mark_up 商品类型的备注信息

 

 

 

商品类型添加

  1. 增加一个TypeController.class.php控制器文件,添加一个add方法

 

 

 

  1. 增加一个add.html视图页面

 

 

效果

 

 

 

  1. 增加一个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.优化:为属性的可选值做一个禁用操作

 

 

 

 

 

属性展示

到时候属性的展示是在商品类型下的列表页进行展示(展示某个商品类型下的属性

 

  1. 在商品类型的lst.html展示页面增加一个属性列表

 

 

效果

 

 

 

  1. TypeController.class.php控制器文件增加一个getAttr方法,获取对于商品类型下的属性

 

 

 

  1. 增加一个getAttr.html视图文件,展示对应商品类型下的属性信息

 

 

效果

 

 


扩展

无刷新获取商品类型属性

  1. TypeController.class.php控制器文件的getAttr方法里面获取所有的商品类型

 

 

 

  1. getAttr.html视图页面展示商品类型

 

 

效果

 

 

  1. 在属性列表页为商品类型下拉框绑定change事件

 

 

注意:上面使用的 `` 反引号这种方式拼接字符串是es6提供的模板字符串语法。需要在高版本的浏览器才可以支持

http://es6.ruanyifeng.com/#docs/string#模板字符串

 

  1. TypeController.class.php控制器文件增加ajaxGetAttr方法

 

 

 

vuejs扩展

主要是教大家去快速的去学习一些新的东西。

 

简介

  1. 什么是vuejs

答: vuejs 是由国内的一个大牛(尤大大、尤雨溪),之前是在google lab实验室进行开发的。现在vuejs产品已经正式走入国际市场。(国外的市场很大)国内大力推广(angularJs 兼容不好),并且该产品是一个MVVM的产品

 

 

  1. 什么是MVVM

答:在我们的后端里面,有MVC的这种开发思想,但是由于现在前端技术非常的火热,也催生出来了一些列的前端框架,前端里面的对传统的MVC进行单独的进行解读,出现一些列的变种叫法:MVVM  MVP  MVX  MV* 都是MVC的思想。

分析:MVVM == MVC

思考: C起的作用? 协调作用,是否实例化模型,是否载入视图

 

下面的这个图,是官方给的一个MVVM的概图:

 

 

 

 

使用

  1. 下载vue.js代码(注意: 现在目前vuejs分为两个大版本 1.x系列  2.x系列)

 

 

https://github.com/vuejs/vue/releases

 

 

 

  1. 页面上引入即可,然后使用vuejs语法进行数据的渲染

 

 

 

vuejs无刷新渲染商品类型属性

  1. 页面上引入vue.js

 

 

 

  1. 在页面上定义一个区域,交给vuejs进行管理

 

 

 

3. getAttr.html视图页面为下拉框定义事件

 

 

 

4. 实例化vue.js, 发送ajax获取数据

 

 

 

  1. TypeController.class.php控制器文件增加ajaxGetAttr方法

 

 

 

 

6. 在页面上使用v-for指令遍历数据

 

 

posted @ 2017-10-06 20:32  奋斗的黑蜗牛1号  阅读(182)  评论(0)    收藏  举报