第十五章:第7节论坛系统(BBS)后台管理权限分配——管理组增删查改

更新于:2018-02-13 23:14:32

这节主要讲超级管理员如何在后台添加、删除、修改管理组,代码比较多。


1.png

在“admin_menu.php”配置文件中,添加这两个菜单参数


1.png


“管理组”、“管理员”增删查改的功能全部写到group控制器中。前面写权限访问方法时,


1.png

整个group控制器只有超级管理员才可以访问。所以只有超级管理员才可以增删查改管理组。


1)查看管理组代码


1.png

在group控制器定义index方法,19行_select方法,是楠神在AllCommon控制器中定义的一个公共查询多行列表的方法,后面用的多,所以我就直接打包成了一个方法。

1.png

说明:


97行paginate方法来自Query类,这是TP框架已写好的分页方法。如果不喜欢用TP框架自带的分页方法,我们可自己在扩展类中写一个分页类,然后调用。


1.png


2)添加管理组代码


1.png


上图是添加页面,URL中参数action_type=1很重要,看下面的代码:


1.png


说明:


添加功能入口方法还是index,参数action_type=1可让程序执行14行代码,从而进入_addGroup方法。

在添加页面表单中有个“is_post”参数,主要是让程序辨别当前是显示添加页面还是处理添加数据。


为什么把入口方法设为index?

后面楠神把很多的一组功能都设置了一个入口方法,其目的方便控制权限。


27行执行“AdminGroup”模型类的insert方法


1.png

有关数据的各种验证全写在了模型类中。


备注:


“AdminLogs”模型类是新添加的一个管理员操作日志表模型类,主要记录管理员的增删改操作记录。像这样的日志记录可以起到追责的作用,谁做了什么事都可以查到。


3)删除管理组代码


1.png


15行_ajaxDel是一个公共方法


1.png


1.png


4)修改管理组代码


1.png

1.png


重点强调:


89行是添加更新条件的代码,这行代码必须写到执行“_getPostData”方法的后面,这是因为在“_getPostData”方法29行代码执行了s_exist函数。


1.png


s_exist是楠神定义的一个查询相同条件的函数,在函数中有用到模型对象的where方法、value方法。


当一个模型对象value方法被执行,模型对象where方法添加的条件会被清空。“AdminGroup”模型类89行添加的条件是“更新条件”,为了不让s_exist函数中value方法清空了“更新条件”,所以要把添加“更新条件”的代码写到执行“_getPostData”方法的后面。


本节内容文字描述有限,就写这些,大家要仔细去看代码。


本节学习代码》》》