在分页的'/ page / x'后将变量附加到URL

时间:2013-06-05 17:14:32

标签: codeigniter

我使用几个URI变量来处理对表的排序,比如

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

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

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

3 个答案:

答案 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;

我希望它有所帮助!