带有获取参数的codeigniter分页url
Posted
技术标签:
【中文标题】带有获取参数的codeigniter分页url【英文标题】:codeigniter pagination url with get parameters 【发布时间】:2011-07-20 01:41:32 【问题描述】:当我在 URL 中传递参数时,我无法在 codeigniter 上设置分页
如果我的网址是这样的:search/?type=groups
我的$config['base_url']
应该是什么才能使分页起作用?
如果我将基本 url 设置为 search/?type=groups
,则生成的 url 为 search/?type=groups/10
表示$_GET['type']=groups/10
谢谢
【问题讨论】:
【参考方案1】:这个问题的最新答案是;
您应该通过启用此配置来启用查询字符串的重用:
$config['reuse_query_string'] = true;
之后你应该初始化分页:
$this->pagination->initialize($config);
添加了
$config['reuse_query_string']
以允许自动重新填充 查询字符串参数,结合普通的 URI 段。 - CodeIgniter 3.0.0 Change Log
【讨论】:
这是完美的答案。尝试这个。所有其他答案也标记为正确也是浪费时间。 这个答案应该被投票并提升到顶部。投票最多的答案在过去可能有所帮助,但现在在某些阶段会中断。 这对我来说效果最好,我接手了另一个开发人员项目,该项目使用帖子而不是获取搜索,这是一团糟,但是一旦我将所有内容从帖子切换到获取,我发现这很有用跨度> 在我的例子中它显示The URI you submitted has disallowed characters.
。 URL 生成如search/10&email=&mobile=11
。现在我该怎么办【参考方案2】:
我遇到过类似的问题,根据上面的答案,这里是我必须根据自己的需要进行定制。
我的 URI 应该是这样的:
base_url() . /search/?term=
所以,这就是我所做的:
$config['base_url'] = base_url ."/search/?term=" . $_GET['term']
【讨论】:
【参考方案3】:遇到了同样的问题,但意识到较新版本的 CI 在分页类中定义了后缀。虽然它仍然不在文档中。无需破解。
【讨论】:
【参考方案4】:在分页配置中:
if (count($_GET) > 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&");
您当前的$_GET
变量将显示在分页链接中。
您可以将$_GET
替换为另一个关联数组。
这不会添加查询字符串,除非已经存在。
更新: 我刚刚看到,如果你从另一个分页号返回点击第一个(1),CI不再关心你的后缀配置。
要解决这个问题,请使用 $config['first_url']
。
例如:$config['first_url'] = $config['base_url'].'?'.http_build_query($_GET);
【讨论】:
这个解决方案救了我的命。它运行良好,我在文档中没有看到任何关于“后缀”配置的信息。谢谢! 很遗憾 CI 没有在他们的文档中写$config['suffix']
@_@
你救了我的命.. 很好的答案!
这是一个真正的解决方案,必须标记为答案.. 很好的答案 +1
伙计,这太棒了,+1【参考方案5】:
在您的控制器中:
$config['anchor_class'] = "class='链接分页'";
在你看来:
$(".link-pagination").each(function()
$(this).attr("href", $(this).attr('href') + "?id=<?= $this->input->get('id') ?>");
);
【讨论】:
【参考方案6】:请看this link。 只需更新修改后的分页类,然后添加
$config['get'] = "?string=" . $_REQUEST['string']."&searchBy=" . $_REQUEST['searchBy'];
【讨论】:
【参考方案7】:行前:
$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.'=';
【讨论】:
【参考方案8】:我认为您正在尝试做与我尝试做的事情相同的事情,并且通过不设置基本 url 并且仅使用此设置使我不必手动编辑库来使其正常工作
$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);
【讨论】:
【参考方案9】:使用 $config['suffix'] 是 IMO 实现这一点的最佳方式,因为它不需要任何额外的处理作为正则表达式解决方案。 $config['suffix'] 用于在 create_links 函数中呈现 url,该函数是 system/libraries/Pagination.php 文件的一部分,因此如果您设置该值,它将用于生成 url 并获胜'不再需要处理,这意味着它会更快。
感谢您的帖子,这为我节省了大量额外的、不需要的编码!
【讨论】:
【参考方案10】:我遇到了同样的问题。我的解决方案是修改分页并将其放入应用程序/库中。 首先我创建
var $get='';
找到所有“a”元素并在href="........'.$this->get.'"'>.......</a>
中添加$get
现在在控制器或模型中输入这些行
$config['get']=(isset($_GET['search']))?'?search='.$_GET['search']:'';
就是这样!希望对你有帮助。
【讨论】:
【参考方案11】:这是我的 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);
);
对我来说很好。
【讨论】:
伟大而简单但不是最好的解决方案,因为如果你不离开元素,链接不会改变。【参考方案12】:我今天也遇到了同样的问题。我的解决方案是这样的:
生成分页链接并将它们存储在字符串中($pagination = $this->pagination->create_links();
)
使用正则表达式查找所有链接并添加查询字符串
使用的正则表达式代码为:
<?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;显示带有您的查询字符串的链接!
【讨论】:
【参考方案13】:如果您使用的是 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")
中的偏移量。
代码强大!
【讨论】:
【参考方案14】:解决方案是 CodeIgniter 不能那样工作。 我需要的是“类型”中每个选项的方法(在控制器中) 所以一种选择是一种称为 :groups 的方法,另一种称为 entry 等 每个方法都根据需要引用不同的模型类或方法。
我正在努力更好地理解 OOP 和 CI ...稍作调整...如果我错了,请随时评论和纠正我。 谢谢
【讨论】:
【参考方案15】:希望您能在此页面上找到答案: LINK。如果可以,请重新编辑您的答案。
【讨论】:
以上是关于带有获取参数的codeigniter分页url的主要内容,如果未能解决你的问题,请参考以下文章