コード例 #1
0
 /**
  * 插件列表
  */
 public function index()
 {
     $this->meta_title = '插件列表';
     $list = D('Addons')->getList();
     $request = (array) I('request.');
     $total = $list ? count($list) : 1;
     $listRows = C('LIST_ROWS') > 0 ? C('LIST_ROWS') : 10;
     $page = new \Admin\Service\AdminPage($total, $listRows, $request);
     $voList = array_slice($list, $page->firstRow, $page->listRows);
     $p = $page->show();
     $this->assign('_list', $voList);
     $this->assign('_page', $p ? $p : '');
     // 记录当前列表页的cookie
     Cookie('__forward__', $_SERVER['REQUEST_URI']);
     $this->display();
 }
コード例 #2
0
 /**
  * 通用分页列表数据集获取方法
  *
  *  可以通过url参数传递where条件,例如:  index.html?name=asdfasdfasdfddds
  *  可以通过url空值排序字段和方式,例如: index.html?_field=id&_order=asc
  *  可以通过url参数r指定每页数据条数,例如: index.html?r=5
  *
  * @param sting|Model  $model   模型名或模型实例
  * @param array        $where   where查询条件(优先级: $where>$_REQUEST>模型设定)
  * @param array|string $order   排序条件,传入null时使用sql默认排序或模型属性(优先级最高);
  *                              请求参数中如果指定了_order和_field则据此排序(优先级第二);
  *                              否则使用$order参数(如果$order参数,且模型也没有设定过order,则取主键降序);
  *
  * @param boolean      $field   单表模型用不到该参数,要用在多表join时为field()方法指定参数
  * @author 朱亚杰 <*****@*****.**>
  *
  * @return array|false
  * 返回数据集
  */
 protected function lists($model, $where = array(), $order = '', $field = true)
 {
     $options = array();
     $REQUEST = (array) I('request.');
     if (is_string($model)) {
         $model = M($model);
     }
     $OPT = new \ReflectionProperty($model, 'options');
     $OPT->setAccessible(true);
     $pk = $model->getPk();
     if ($order === null) {
         //order置空
     } else {
         if (isset($REQUEST['_order']) && isset($REQUEST['_field']) && in_array(strtolower($REQUEST['_order']), array('desc', 'asc'))) {
             $options['order'] = '`' . $REQUEST['_field'] . '` ' . $REQUEST['_order'];
         } elseif ($order === '' && empty($options['order']) && !empty($pk)) {
             $options['order'] = $pk . ' desc';
         } elseif ($order) {
             $options['order'] = $order;
         }
     }
     unset($REQUEST['_order'], $REQUEST['_field']);
     if (empty($where)) {
         $where = array('status' => array('egt', 0));
     }
     if (!empty($where)) {
         $options['where'] = $where;
     }
     $options = array_merge((array) $OPT->getValue($model), $options);
     $total = $model->where($options['where'])->count();
     if (isset($REQUEST['r'])) {
         $listRows = (int) $REQUEST['r'];
     } else {
         $listRows = C('LIST_ROWS') > 0 ? C('LIST_ROWS') : 10;
     }
     $page = new \Admin\Service\AdminPage($total, $listRows, $REQUEST);
     if ($total > $listRows) {
         $page->setConfig('theme', '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
     }
     $p = $page->show();
     $this->assign('_page', $p ? $p : '');
     $this->assign('_total', $total);
     $options['limit'] = $page->firstRow . ',' . $page->listRows;
     $model->setProperty('options', $options);
     return $model->field($field)->select();
 }