欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel pagination lost parameter 分页 request 参数带不过去 传不过去 排除 page Request except page 有大用

 

我和Laravel 4的分页课一起使用了雄辩。

问题:当URL中有一些GET参数时,例如:http://site.com/users?gender=female&body=hot,生成的分页链接只包含该page参数,没有其他参数。

刀片模板

{{ $users->link() }}

这有一个->append()功能,但是当我们不知道有多少GET参数时,我们如何才能append()将其他GET参数包含在分页链接中,而不会有一大堆if代码搞乱我们的刀片模板?

分享改善这个问题
 

6答案 正确答案 我的方法是  {!! $records->appends(Request::except('page'))->links() !!}

编辑:Connor的评论与Mehdi的答案是要做这项工作。感谢他们的澄清。

->appends()可以接受一个数组作为参数,你可以通过Input::except('page'),应该做的伎俩。

例:

return view('manage/users', [
    'users' => $users->appends(Input::except('page'))
]);
分享改善这个答案
 
22 
只是为了注意其他Google员工这样做 - 现在是复数appends不是 append正确的链接将是$query->appends($foo)->links(); -  Connor Peet Oct 13 '13 at 13:01
3 
我发现$query->appends(Input::except('page'))->links();工作更好。否则,当您单击页面时,页面变量不会更新。Laravel 4.1.24。 -  bitlather Mar 22 '14 at 23:19
   
...然后我向下滚动看Mehdi的解决方案。 -  bitlather Mar 22 '14 at 23:20
   
或者您可以使用Input :: get()获取所有$ _GET vars -  Benubird Apr 7 '14 at 10:01
1 
LARAVEL 5: {!! $myItems->appends(Input::except('page'))->render() !!} -  ecairol Oct 11 '15 at 22:59
 

要注意Input::all(),这将包括以前?page=在每次打开页面连连值!
例如,如果你在?page=1,打开下一页,它将打开?page=1&page=2 
所以最后一个值页面将是你看到的页面!不是您想要看到的页面

解决方案:使用 Input::except(array('page'))

分享改善这个答案
 

不是append(),但appends() 因此,正确的答案是:

{!! $records->appends(Input::except('page'))->links() !!}
分享改善这个答案
 

LARAVEL 5

视图必须包含以下内容:

{!! $myItems->appends(Input::except('page'))->render() !!}

分享改善这个答案
 

我想你应该在Laravel 5中使用这个代码,Laracast提到它:

$users->appends(request()->input())->links();
分享改善这个答案
 

使用这个约束“

{!! $myItems->appends(Request::capture()->except('page'))->render() !!}

为什么?

1)你删除添加到请求的所有内容

  $request->request->add(['variable' => 123]);

2)您不需要$请求作为函数的输入参数

3)你排除“页面”

PS),它适用于Laravel 5.1

来自 http://stackoverflow.com/questions/17159273/laravel-pagination-links-not-including-other-get-parameters






 

 

我有一个页面列出公寓取决于这样的预订日期

mypage.com/finder?date-from=2011-03-04&date-to=2011-03-12

一切正确,我从url获取日期和日期,并使用这些值搜索数据库。问题是当我分页,我点击转到另一个页面,url更改。

mypage.com/finder?page=9 

并得到错误值必须提供

正确的URL必须是

mypage.com/finder?date-from=2011-03-04&date-to=2011-03-12&page=9

我在控制器上使用分页,$ searchResult-> links(); 生成链接

我可以做什么通过日期值从页到页,以便分页工作?

谢谢

分享改善这个问题
 

2答案 正确答案

如果您想要解决现有的查询字符串数据,请使用以下命令:

$searchResult->appends(array(
    'date-from' => Input::get('date-from'),
    'date-to'   => Input::get('date-to'),
));

阅读文档:追加到分页链接


您可以缩短一点:

$searchResult->appends( Input::only('data-from', 'date-to') );

最终是同样的事情。

分享改善这个答案
 
   
非常感谢,它的工作原理 -  不会在 3月4日14日在1:23
   
我认为一个更好的方法是 - Laravel首先检查现有的查询字符串,如果存在,请附加到其它的页面,从?page = n开始。当前方法的问题是当您再次单击分页链接时,您以前的排序变量将被丢弃。 -  elf1984 Jul 20 '14 at 23:04

您可以使用“附加”功能来执行此操作。文档中有示例:http : //laravel.com/docs/pagination


来自 http://stackoverflow.com/questions/22160710/laravel-pagination-get-variables

普通分类: