【问题标题】:Laravel 5 multiple paginations on one pageLaravel 5 一页上的多个分页
【发布时间】:2015-05-17 11:49:25
【问题描述】:

我试图在一个页面上有 2 个分页。

查看:

{{!! $items->appends(['page2' => Request::input('page2', 1)])->render() !!}}

但它不起作用,因为使用自定义 $pageName 进行分页 ($items->setPageName('custom_page_parameter')) 链接在 laravel 5 中不起作用。

https://stackoverflow.com/questions/29035006/laravel-5-pagination-wont-move-through-pages-with-custom-page-name

这是我在 laravel 4 中的做法:

Laravel Multiple Pagination in one page

Laravel 5 的实现方式是什么?

【问题讨论】:

标签: laravel laravel-5


【解决方案1】:

在构建分页器对象之前尝试使用\Paginator::setPageName('foo'); 函数:

    \Paginator::setPageName('foo');
    $models = Model::paginate(1);
    return view('view_foo', compact('models'));

这个问题也可能有帮助:Laravel 5 pagination, won't move through pages with custom page name

还要注意有一个错误 atm:https://github.com/laravel/framework/issues/8000

【讨论】:

    【解决方案2】:

    我花了太多时间试图找出如何做到这一点,所以我想我会分享我的发现,以防万一有另一个像我这样的可怜人在那里。这适用于 5.1...

    在控制器中:

    $newEvents = Events::where('event_date', '>=', Carbon::now()->startOfDay())
        ->orderBy('event_date')
        ->paginate(15,['*'], 'newEvents');
    
    $oldEvents = Events::where('event_date', '<', Carbon::now()->startOfDay())
        ->orderBy('event_date', 'desc')
        ->paginate(15,['*'], 'oldEvents');
    

    然后在视图中照常继续:`

    // some code to display $newEvents
    {!! $newEvents->render() !!}
    
    // some code to display $oldEvents
    {!! $oldEvents->render() !!}
    

    现在,它不会在通过 $newEvents 分页时记住 $oldEvents 的页面。对此有什么想法吗?

    参考文献:

    【讨论】:

    • 简而言之,->paginate(15, ['*'], 'newEvents');不要忘记'newEvents'周围缺少的报价
    • 为了在分页 $newEvents 时记住 $oldEvents 的页码,使用这个: {{ $newEvents -> appends(["oldEvents" => $oldEvents -> currentPage()]) - > links() }} 分页 oldEvents 反之亦然: {{ $oldEvents -> appends(["newEvents" => $newEvents -> currentPage()]) -> links() }}
    【解决方案3】:
    $published = Article::paginate(10, ['*'], 'pubArticles');
    $unpublished = Article::paginate(10, ['*'], 'unpubArticles');
    

    在 URI 中使用 paginate() 方法的第三个参数如下:

    laravel/public/articles?pubArticles=3

    laravel/public/articles?unpubArticles=1

    【讨论】:

      【解决方案4】:

      在控制器中:

      $produk = Produk::paginate(5, ['*'], 'produk');
      $region = Region::paginate(5, ['*'], 'region');
      

      在视图中:

      {{$produk->appends(['region' => $region->currentPage()])->links()}}    
      {{$region->appends(['produk' => $produk->currentPage()])->links()}}   
      

      参考:[Laravel 5] Multi Paginate in Single Page

      【讨论】:

      • 这是更好的答案
      猜你喜欢
      • 2015-11-16
      • 2016-06-13
      • 2017-01-29
      • 2017-11-30
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      相关资源
      最近更新 更多