Example #1
0
 /**
  +----------------------------------------------------------
 * 根据表单生成查询条件
 * 进行列表过滤
  +----------------------------------------------------------
 * @access protected
  +----------------------------------------------------------
 * @param Model $model 数据对象
 * @param HashMap $map 过滤条件
 * @param string $sortBy 排序
 * @param boolean $asc 是否正序
  +----------------------------------------------------------
 * @return void
  +----------------------------------------------------------
 * @throws ThinkExecption
  +----------------------------------------------------------
 */
 protected function _list($model, $field = '*', $map = array(), $sortBy = '', $asc = false, $search = array(), $options = array())
 {
     session('listaction', ACTION_NAME);
     //排序字段 默认为主键名
     $pkname = $model->getPk();
     $order = !empty($sortBy) ? $sortBy : $pkname;
     //排序方式默认按照倒序排列
     //接受 sost参数 0 表示倒序 非0都 表示正序
     $sort = $asc ? $asc : 'desc';
     //取得满足条件的记录数
     if (!empty($options["alias"])) {
         $pkname = $options["alias"] . "." . $pkname;
     }
     $count = $model->where($map)->count($pkname);
     import("ORG.Util.Page");
     //创建分页对象
     $listRows = !empty($_REQUEST['listRows']) ? $_REQUEST['listRows'] : C('ADMIN_PAGE_SIZE');
     $p = new Page($count, $listRows);
     //分页查询数据
     if (!empty($options)) {
         $model->setOptions($options);
     }
     $list = $model->field($field)->where($map)->order($order . ' ' . $sort)->limit($p->firstRow . ',' . $p->listRows)->select();
     //分页跳转的时候保证查询条件
     foreach ($map as $key => $val) {
         if (!is_array($val)) {
             if (strpos($key, ".") !== false) {
                 $arr = explode(".", $key);
                 $key = $arr[1];
             }
             $p->parameter .= "{$key}=" . urlencode($val) . "&";
         }
     }
     foreach ($search as $key => $val) {
         if (!is_array($val)) {
             $p->parameter .= "{$key}=" . urlencode($val) . "&";
         }
     }
     if (method_exists($this, '_listFilter')) {
         $list = $this->_listFilter($list);
     }
     //分页显示
     $page = $p->show();
     //列表排序显示
     $sortImg = $sort;
     //排序图标
     $sortAlt = $sort == 'desc' ? '升序排列' : '倒序排列';
     //排序提示
     $sort = $sort == 'desc' ? 1 : 0;
     //排序方式
     //模板赋值显示
     $this->assign('list', $list);
     $this->assign("pagebar", $page);
     return;
 }