【问题标题】:Laravel: How to extend default paginator by adding the item number?Laravel:如何通过添加项目编号来扩展默认分页器?
【发布时间】:2020-09-28 17:16:34
【问题描述】:

我正在尝试在有分页的表格中添加项目编号: The table

为此,我在控制器中放置了一个“偏移量”并将其发送回视图:paginationOffset

它可以工作,但我正在尝试重构控制器中的代码以避免重复。我看到了一些向Support\Collection 添加宏并手动实例化LengthAwarePaginator 的示例。尝试过,但无法使用“偏移量”。

您建议如何在不将逻辑放在视图上的情况下对其进行重构?

谢谢!

【问题讨论】:

    标签: laravel eloquent laravel-7 laravel-pagination


    【解决方案1】:

    分页器不仅仅是传回记录,它还带有许多辅助方法。

    您可以在 Laravel 文档中查看它们 https://laravel.com/docs/7.x/pagination#paginator-instance-methods

    例如,您可以使用$results->firstItem()

    这将“获取结果中第一项的结果编号。”

    它带有许多开箱即用的变量:-

    {
       "total": 50,
       "per_page": 15,
       "current_page": 1,
       "last_page": 4,
       "first_page_url": "http://laravel.app?page=1",
       "last_page_url": "http://laravel.app?page=4",
       "next_page_url": "http://laravel.app?page=2",
       "prev_page_url": null,
       "path": "http://laravel.app",
       "from": 1,
       "to": 15,
       "data":[
            {
                // Result Object
            },
            {
                // Result Object
            }
       ]
    }
    

    【讨论】:

    • 感谢@ColinMD,它成功了。我能够在模板上使用$loop->iteration + $contacts->firstItem() - 1 来获得相同的结果。有什么方法可以通过某种辅助方法从模板中提取该逻辑?
    • 您可能可以,但我从未尝试过。您可以捕获 paginate() 和 dd() 以查看它在控制器中传回的内容。这取决于 Laravel 是否传回所有分页器方法和变量。
    猜你喜欢
    • 2017-04-25
    • 2016-01-16
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2021-10-14
    相关资源
    最近更新 更多