0

我正在使用几个 URI 变量来处理表格的排序,就像这样

.../page/7/sortby/serial_number/orderby/desc

如您所见,我也在使用内置的 CI 分页库。我现在的问题是使用$this->pagination->create_links();从 URI 中剥离排序变量创建的链接,使得在页面之间维护这些排序选项变得困难。

如何将这些变量附加sortby/foo/orderby/bar到分页库创建的链接的 URI 中?

4

3 回答 3

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); 
于 2013-06-05T17:24:23.147 回答
1

感谢 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);

于 2013-06-05T19:24:49.413 回答
1

我使用 ejfrancis 的答案,但是......

如果由于某种原因用户在 url 的页面变量中输入的不是数字或负数,我建议在设置 $config['uri_segment'] 之前进行验证,如下所示:

    $totalseg = $this->uri->segment($totalseg)>0 && 
           is_numeric($this->uri->segment($totalseg))?
                        $totalseg : NULL;

我希望它有帮助!

于 2014-05-07T13:37:10.860 回答