我要把头发拉过来了!
在我的页面初始加载分页(通过CI)时,所有行都会显示,即使我只想要3.但是在点击其他页面时,它工作正常(显示正确的行),但是即使我点击第2,3页等,也总是“被选中”(不可点击)
有什么想法吗?
我的 CONTROLLER :
function album($type, $album_id, $album_name) {
$this->load->library('pagination');
$config['base_url'] = base_url("photo_store/album/$type/$album_id/$album_name/");
$config['total_rows'] = $this->Media_model->get_photos($album_id, 'display_date DESC', NULL, NULL, TRUE);
$config['per_page'] = 3;
$this->pagination->initialize($config);
$album_photos = $this->Media_model->get_photos($album_id, 'display_date DESC', $config['per_page'], $this->uri->segment(6), FALSE);
$this->_load_view(array(
/* some other variables here */
'album_photos' => $album_photos
));
)
private function _load_view($more_data) {
$data = array_merge($more_data, array( /* some other variables here */ ));
$this->load->view('template', $data);
}
我的模型:
public function get_photos($album_id=NULL, $order_by='display_date DESC', $limit=NULL, $offset=NULL, $count=FALSE) {
$result = array();
$query = $this->db->select('medium.*')->join('medium', "$this->item.medium_id = medium.id", 'inner')->order_by($order_by);
$limit = $limit ? $limit : '0';
$offset = $offset ? $offset : '0';
if ($limit!=='0' && $offset!=='0') {
$query->limit($limit, $offset);
}
if ($album_id) { $result = $query->get_where($this->item, array('album_id' => $album_id)); }
else { $result = $query->get($this->item); }
if ($count){ return $result->num_rows(); }
else { return $result->result(); }
}
我的视图:
foreach ($album_photos as $photo) {
//display photos here
}
echo $this->pagination->create_links();
答案 0 :(得分:3)
您可以将其添加到配置数组中,以便分页知道在哪里找到当前页面:
$config['uri_segment'] = 4;
答案 1 :(得分:1)
我相信问题的一部分就在这里:
if ($limit!=='0' && $offset!=='0') {
$query->limit($limit, $offset);
}
由于您的语句没有else
部分,因此查询永远不会限制在该第一页。
我建议您将该代码更改为
if ($limit!=='0') {
$query->limit($limit, $offset);
}
甚至只是
$query->limit($limit, $offset);
因为$limit
理论上永远不应该是null
或0
,因为您已将其设置为3
。除非设置$offset
,否则0
应为null
,以便您可以在模型函数中将{{1}}替换为{{1}},
答案 2 :(得分:1)
如果网址中传递了超过3个uri细分,则所选的分页页面将无法正确显示,它将始终突出显示第一页。
分页正在运行,但所选页面未正确显示。
解决这个问题,解决方案:
转到 Pagination.php 文件,该文件位于 system-> libraries-> Pagination.php
只需设置
即可var $uri_segment = 4;// or 5 or 6;
它会起作用。
答案 3 :(得分:0)
您可以将其添加到配置数组中,以便分页知道在哪里找到当前页面:
$config['uri_segment'] = 4; // Your appropriate uri segment: 5 or 6
答案 4 :(得分:0)
尝试对控制器进行编码,如下所示:
public function index($page=''){
//...
$page = ($page!='')? $page : 0;
$config["cur_page"] = $page;
//...
}