我使用几个URI变量来处理对表的排序,比如
.../page/7/sortby/serial_number/orderby/desc
如您所见,我也使用内置的CI分页库。我现在的问题是,使用$this->pagination->create_links();
创建的链接会从URI中删除排序变量,这使得难以在页面之间维护这些排序选项。
如何将这些变量sortby/foo/orderby/bar
附加到由分页库创建的链接的URI中?
答案 0 :(得分:1)
您可以使用base_url
选项,页码段必须是最后一个。这有点烦人,但我认为这是最简单的方法。
// Get the current url segments
$segments = $this->uri->uri_to_assoc();
// Unset the "page" segment so it's not there twice
$segments['page'] = null;
// Put the uri back together
$uri = $this->uri->assoc_to_uri($segmenmts);
$config['base_url'] = 'controller/method/'.$uri.'/page/';
// other config here
$this->pagination->initialize($config);
答案 1 :(得分:1)
我找到答案归功于WesleyMurch带领我朝着正确的方向前进。为了始终将页面变量作为uri中的最后一个(使用CI的分页库时这是必需的),我使用了这个
$totalseg = $this->uri->total_segments();
$config['uri_segment'] = $totalseg;
然后按照WesleyMurch的想法,我重建了base_url,
$segments = $this->uri->uri_to_assoc();
unset($segments['page']); //so page doesn't show up twice
$uri = $this->uri->assoc_to_uri($segments);
$config['base_url'] = site_url()."/controller/method/".$uri."/page/";
当然用所有正确的配置选项初始化分页
$this->pagination->initialize($config);
答案 2 :(得分:1)
我使用了ejfrancis的答案,但......
如果由于某种原因用户在网址页面var中没有输入数字或负数,我建议在设置$ config [' uri_segment']之前进行验证,如下所示:
$totalseg = $this->uri->segment($totalseg)>0 &&
is_numeric($this->uri->segment($totalseg))?
$totalseg : NULL;
我希望它有所帮助!