当我在URL
中传递参数时,我在codeigniter上设置分页时遇到问题如果我的网址是这样的:search/?type=groups
我的$config['base_url']
分页应该是什么?
如果我将基本网址设置为search/?type=groups
,则生成的网址为search/?type=groups/10
表示$_GET['type']=groups/10
谢谢
答案 0 :(得分:98)
在分页配置中:
if (count($_GET) > 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&");
您当前的$_GET
vars将显示在分页链接中。
您可以用另一个关联数组替换$_GET
。
除非已存在查询字符串,否则不会添加查询字符串。
更新的 我刚看到,如果你从另一个分页号码返回点击第一个(1),CI就不再关心你的后缀配置了。
修复使用$config['first_url']
。
例如:$config['first_url'] = $config['base_url'].'?'.http_build_query($_GET);
答案 1 :(得分:17)
这个问题的最新答案是:
您应该通过启用此配置来启用查询字符串的重新使用:
$config['reuse_query_string'] = true;
之后你应该初始化分页:
$this->pagination->initialize($config);
添加
$config['reuse_query_string']
以允许自动重新填充 查询字符串参数,与普通URI段结合使用。 - CodeIgniter 3.0.0 Change Log
答案 2 :(得分:4)
如果您使用的是codeigniter 2,config.php
,$config['allow_get_array']
中有一个选项 - 请确保其为TRUE。
然后将分页选项$config['page_query_string']
设置为TRUE
。
最后,在您将$config['base_url']
设置为"search/?type=groups"
的情况下,分页会在其后添加per_page
查询字符串。
它应该以这种方式工作,你将获得$this->input->get("per_page")
中的偏移量。
代码强大!
答案 3 :(得分:4)
这是我的jquery解决方案:
只需在这样的div中包装分页链接:
$config['full_tag_open'] = '<div id="pagination">';
$config['full_tag_close'] = '</div>';
而不是添加以下jquery代码:
$("#pagination > a").each(function() {
var g = window.location.href.slice(window.location.href.indexOf('?'));
var href = $(this).attr('href');
$(this).attr('href', href+g);
});
对我来说很好。
答案 4 :(得分:2)
我今天在同一个问题上挣扎。我的解决方案是:
生成分页链接并将其存储在字符串中($pagination = $this->pagination->create_links();
)
使用regexp查找所有链接并添加查询字符串
使用的正则表达式代码是:
<?php
$query = '?myvar=myvalue';
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
$unique = array();
if( preg_match_all("/$regexp/siU", $pagination, $matches) )
{
foreach ( $matches[2] as $link )
{
if ( !isset($unique[$link]) )
{
$data['pagination'] = str_replace($link . '"', $link . $query . '"', $data['pagination']);
$unique[$link] = '';
}
}
}
unset($unique);
对我来说就像一个魅力!它的作用是:
然后只需将变量分配给将要显示的模板,并使用print $ your_pagination_variable_name;显示附加查询字符串的链接!
答案 5 :(得分:2)
我认为你正在尝试做同样的事情,我试图通过不设置基本网址来正常工作,只是使用这个设置,这使我不必手动编辑库
$this->load->library('pagination');
$config['use_page_numbers'] = TRUE;
$config['page_query_string'] = TRUE;
$config['total_rows'] = 200;
$config['per_page'] = 20;
$this->pagination->initialize($config);
答案 6 :(得分:1)
解决方案是CodeIgniter不起作用。 我需要的是“类型”中每个选项的方法(在控制器中) 所以一个选项是一个叫做的方法:组,另一个叫做条目等等 每种方法都根据需要引用不同的模型类或方法。
我正在努力更好地了解OOP和CI ...稍微调整一下...如果我错了,请随意评论并纠正我。 谢谢
答案 7 :(得分:1)
使用$ config ['suffix']是IMO实现此目的的最佳方式,因为它不需要任何额外的处理作为正则表达式解决方案。 $ config ['suffix']用于create_links函数中url的渲染,这是system / libraries / Pagination.php文件的一部分,所以如果设置了它,它将用于生成urls并赢取不再需要处理,这意味着它会更快。
感谢这篇文章,这为我节省了大量额外的,不需要的编码!
答案 8 :(得分:1)
行前:
$this->base_url = rtrim($this->base_url).'&'.$this->query_string_segment.'=';
替换下面的代码:
if(isset($_GET[$this->query_string_segment]))
{
unset($_GET[$this->query_string_segment]);
}
$uri = http_build_query($_GET);
$uri = empty($uri) ? '?' : $uri . '&';
$this->base_url = rtrim($this->base_url).$uri.$this->query_string_segment.'=';
答案 9 :(得分:1)
只需看this link 只需更新修改后的分页类,然后添加
$config['get'] = "?string=" . $_REQUEST['string']."&searchBy=" . $_REQUEST['searchBy'];
答案 10 :(得分:0)
我遇到了同样的问题。我的解决方案是修改分页并将其放在应用程序/库中。 首先我创建
var $get='';
找到所有“a”元素并在href="........'.$this->get.'"'>.......</a>
现在在控制器或模型中输入这些行
$config['get']=(isset($_GET['search']))?'?search='.$_GET['search']:'';
就是这样!我希望它会对你有所帮助。
答案 11 :(得分:0)
在您的控制器中:
$ config ['anchor_class'] =“class ='link-pagination'”;
在你的观点中:
$(".link-pagination").each(function() {
$(this).attr("href", $(this).attr('href') + "?id=<?= $this->input->get('id') ?>");
});
答案 12 :(得分:0)
遇到同样的问题,但意识到CI的较新版本在分页类中定义了后缀。虽然它仍然没有在文档中。不需要破解它。
答案 13 :(得分:0)
我遇到过类似的问题,基于上面的答案,这里是我根据自己的需要做的定制。
我的URI是这样的:
base_url() . /search/?term=
所以,这就是我所做的:
$config['base_url'] = base_url ."/search/?term=" . $_GET['term']
答案 14 :(得分:-4)
希望您能在此页面找到答案: LINK。如果可以,请重新编辑您的答案。