我正在使用几个 URI 变量来处理表格的排序,就像这样
.../page/7/sortby/serial_number/orderby/desc
如您所见,我也在使用内置的 CI 分页库。我现在的问题是使用$this->pagination->create_links();
从 URI 中剥离排序变量创建的链接,使得在页面之间维护这些排序选项变得困难。
如何将这些变量附加sortby/foo/orderby/bar
到分页库创建的链接的 URI 中?
我正在使用几个 URI 变量来处理表格的排序,就像这样
.../page/7/sortby/serial_number/orderby/desc
如您所见,我也在使用内置的 CI 分页库。我现在的问题是使用$this->pagination->create_links();
从 URI 中剥离排序变量创建的链接,使得在页面之间维护这些排序选项变得困难。
如何将这些变量附加sortby/foo/orderby/bar
到分页库创建的链接的 URI 中?
您可以使用该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);
感谢 WesleyMurch 带领我朝着正确的方向前进,我找到了答案。为了始终将 page 变量作为 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);
我使用 ejfrancis 的答案,但是......
如果由于某种原因用户在 url 的页面变量中输入的不是数字或负数,我建议在设置 $config['uri_segment'] 之前进行验证,如下所示:
$totalseg = $this->uri->segment($totalseg)>0 &&
is_numeric($this->uri->segment($totalseg))?
$totalseg : NULL;
我希望它有帮助!