/** +---------------------------------------------------------- * 根据表单生成查询条件 * 进行列表过滤 +---------------------------------------------------------- * @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; }