我们的CI安装在配置中具有以下设置...
$config['enable_query_strings'] = TRUE;
我们需要这个,以便我们的应用程序的另一个区域可以使用第三方API正确运行。然而,正在发生的事情是,分页是默认为查询字符串的分页方法,这种方法与缓存无关。
现在,他们看起来像这样......
http://localhost/something/?&page=6
缓存效果不佳,主要是因为每个页面的URL都与CI相同。我的目标是切换到下面的示例,而不会弄乱我的应用程序的其余部分的全局设置。
我一直试图在应用程序的这一部分中找到一种方法来禁用上述设置,这样我们就可以正确地为分页提供单独的URL,就像这样......
http://localhost/something/1
http://localhost/something/2
http://localhost/something/3
到目前为止,我一直无法覆盖此控制器的设置,老实说,我不确定是否有办法实际执行此操作。任何帮助表示赞赏。必须采用某种方法以某种方式禁用单个控制器的功能。
答案 0 :(得分:2)
您可以使用routing吗?
$route['something/page/(:num)'] = "something?&page=$1";
编辑:使用$config['enable_query_strings'] = TRUE;
系统/库/ Pagination.php
〜第134行
更改
if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
{
if ($CI->input->get($this->query_string_segment) != 0)
{
$this->cur_page = $CI->input->get($this->query_string_segment);
// Prep the current page - no funny business!
$this->cur_page = (int) $this->cur_page;
}
}
else
{
if ($CI->uri->segment($this->uri_segment) != 0)
{
$this->cur_page = $CI->uri->segment($this->uri_segment);
// Prep the current page - no funny business!
$this->cur_page = (int) $this->cur_page;
}
}
到
if ($CI->uri->segment($this->uri_segment) != 0)
{
$this->cur_page = $CI->uri->segment($this->uri_segment);
// Prep the current page - no funny business!
$this->cur_page = (int) $this->cur_page;
}
〜第196行
if ($CI->config->item('enable_query_strings') === TRUE OR $this->page_query_string === TRUE)
{
$this->base_url = rtrim($this->base_url).'&'.$this->query_string_segment.'=';
}
else
{
$this->base_url = rtrim($this->base_url, '/') .'/';
}
到
$this->base_url = rtrim($this->base_url, '/') .'/';
可能会这样做。或者更好的形式是挂钩页面......
答案 1 :(得分:2)
简单的解决方案......
$this->config->set_item('enable_query_strings',FALSE);
在调用控制器中的分页逻辑之前,先将其放入。感谢#codeigniter IRC频道中的Taftse进行此简单覆盖。