与CodeIgniter一起分页时丢失URI段

Dan*_*n H 5 php pagination codeigniter offset segment

我有一个/支付界面,用户应该可以通过价格范围,银行和其他东西进行过滤.这些过滤器是标准选择框.当我提交过滤器表单时,所有帖子数据都会转到另一个名为payment/search的方法.该方法执行验证,将post值保存到会话flashdata中,并将用户重定向回到/通过URL传递flashdata名称的付款.

所以我的标准分页链接没有过滤器是这样的:

payments/index/20/
payments/index/40/
payments/index/60/
Run Code Online (Sandbox Code Playgroud)

如果您提交过滤器表单,则返回的URL为:

payments/index/0/b48c7cbd5489129a337b0a24f830fd93
Run Code Online (Sandbox Code Playgroud)

这很有用.如果我为其他东西改变了零,那就分页就好了.然而,唯一的问题是<< 1 2 3 4 >>页面链接不会在分页偏移之后保留散列.CodeIgniter正在生成忽略该额外uri段的页面链接.

我的uri_segment配置已设置为3:

$config['uri_segment'] = 3;
Run Code Online (Sandbox Code Playgroud)

我无法将uri_segment设置为4,因为该哈希可能存在也可能不存在.有什么想法我怎么解决这个?CI是否必须将偏移量作为uri中的最后一个段?也许我正在尝试一种不正确的方法,所以我都是耳朵.

谢谢大家.

编辑:为什么我通过uri传递flashdata名称你可能会问?因为它允许用户打开多个浏览器选项卡并在每个选项卡中执行不同的搜索.对于您进行的每次过滤,都会生成一个新的flashdata var.

Dan*_*n H 3

对于来自 Google 的用户,解决方案如下:

在分页配置数组中,我为此更改了 base_url:

$config['base_url'] = site_url('payments/index/' . $this->uri->segment(3) . '/' . $this->uri->segment(4));
Run Code Online (Sandbox Code Playgroud)

其中,segment(3) 是我的偏移量,segment(4) 是哈希值。因此,在这种情况下,哈希可能存在也可能不存在,并且分页仍然有效。

另一种方法可能是这样的:如果您转到支付,并且 URL 中没有 flashdata ID,它会将用户重定向到支付/搜索,并创建一个带有空过滤器的空数组。然后它重定向回 payment/_NEW_FLASHDATA_ID_HERE_。这样,URL 中将始终具有 flashdata ID,并且您可以像往常一样在最后一个 URI 段中拥有分页偏移量。