weiphp 投票插件的主控制器部分代码

 1 <?php
 2 
 3 namespace Addons\Vote\Controller;    //命名空间,设置投票vote
 4 
 5 use Home\Controller\AddonsController;        //引入系统插件控制器
 6 
 7 class VoteController extends AddonsController {        //投票的主控制器
 8     protected $model;        //设置字段model
 9     protected $option;        //设置字段option
10     public function __construct() {        //构造函数
11         parent::__construct ();        //调用父类的构造函数
12         $this->model = M ( 'Model' )->getByName ( $_REQUEST ['_controller'] );        //查询model表,获取该插件基本列表信息
13         $this->model || $this->error ( '模型不存在!' );    //判断模型是否存在,若不存在抛出错误提示
14         
15         $this->assign ( 'model', $this->model );    //将model数据传到模板,初始化的作用
16         
17         $this->option = M ( 'Model' )->getByName ( 'vote_option' );        //查vote_option获取投票模型字段信息
18         $this->assign ( 'option', $this->option );        //option数据传到模板,初始化的作用
19     }
20     /**
21      * 显示指定模型列表数据
22      */
23     public function lists() {    //列表控制方法
24         $page = I ( 'p', 1, 'intval' ); // 默认显示第一页数据
25                                         
26         // 解析列表规则
27         $list_data = $this->_list_grid ( $this->model );    //_list_grid方法解析列表规则
28         $grids = $list_data ['list_grids'];        //给子数组别名
29         $fields = $list_data ['fields'];        //给子数组别名
30         
31         // 关键字搜索
32         $map ['token'] = get_token ();        //获取token
33         $key = $this->model ['search_key'] ? $this->model ['search_key'] : 'title';        //判断并赋值
34         if (isset ( $_REQUEST [$key] )) {        //判断并将字符转换为 HTML 实体
35             $map [$key] = array (
36                     'like',
37                     '%' . htmlspecialchars ( $_REQUEST [$key] ) . '%' 
38             );
39             unset ( $_REQUEST [$key] );
40         }
41         // 条件搜索
42         foreach ( $_REQUEST as $name => $val ) {    //循环
43             if (in_array ( $name, $fields )) {        //组装$map数组
44                 $map [$name] = $val;        //把$val传值给$map [$name]
45             }
46         }
47         $row = empty ( $this->model ['list_row'] ) ? 20 : $this->model ['list_row'];        //判断并设置model ['list_row']
48         
49         // 读取模型数据列表
50         
51         empty ( $fields ) || in_array ( 'id', $fields ) || array_push ( $fields, 'id' );    //判断数组中字段
52         $name = parse_name ( get_table_name ( $this->model ['id'] ), true );        //获取表名,并转换格式
53         $data = M ( $name )->field ( empty ( $fields ) ? true : $fields )->where ( $map )->order ( 'id DESC' )->page ( $page, $row )->select ();        //查表,并id升序排序
54         
55         /* 查询记录总数 */
56         $count = M ( $name )->where ( $map )->count ();
57         
58         // 分页
59         if ($count > $row) {        //若总数大于基本分页数
60             $page = new \Think\Page ( $count, $row );        //实例化分也类
61             $page->setConfig ( 'theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%' );
62             $this->assign ( '_page', $page->show () );
63         }
64         
65         $this->assign ( 'list_grids', $grids );        //传参list_grids
66         $this->assign ( 'list_data', $data );        //传参list_data
67         $this->meta_title = $this->model ['title'] . '列表';        //给meta_title赋值
68         $this->display ( T ( 'Addons://Vote@Vote/lists' ) );        //调用模板显示
69     }
70     public function del() {        //列表中的删除方法
71         $ids = I ( 'id', 0 );        //对传参进行赋值
72         if (empty ( $ids )) {        //判断$ids是否为空
73             $ids = array_unique ( ( array ) I ( 'ids', 0 ) );        //若$ids不为空,将数组降维
74         }
75         if (empty ( $ids )) {
76             $this->error ( '请选择要操作的数据!' );        //若数组为空,提示错误
77         }
78         
79         $Model = M ( get_table_name ( $this->model ['id'] ) );        //实例化model表中对应id的一条数据
80         //组装数组
81         $map = array (
82                 'id' => array (
83                         'in',
84                         $ids 
85                 ) 
86         );
87         $map ['token'] = get_token ();
88         if ($Model->where ( $map )->delete ()) {    //删除数据操作并做判断是否删除成功
89             $this->success ( '删除成功' );
90         } else {
91             $this->error ( '删除失败!' );
92         }
93     }


 

posted on 2015-06-30 00:45  dennr  阅读(307)  评论(0编辑  收藏  举报