aledefreitas/lv-loadmorepagination

Laravel 的 Load More Pagination。允许加载一定数量的初始条目,后续页面可以加载不同数量的条目

0.1.0 2018-02-01 10:18 UTC

This package is auto-updated.

Last update: 2024-09-14 00:44:16 UTC


README

Build Status

一个提供 LoadMorePagination 特性的包,您可以使用它用初始数量的条目来分页模型结果,然后后续页面使用不同数量的条目。

此包不实现任何分页器接口或类似的东西,它只是返回与分页器类似的数组,包含诸如 last_page、current_page、data 等常用信息。

用法

要安装此包,请执行以下操作

composer require vitorf7/lv-loadmorepagination

安装完成后,您可以使用两种方式:要么将其导入到您的 Eloquent 模型中,要么在控制器、存储库等中使用它。

此包初始加载9个项目,后续加载3个项目。

在模型中

<?php

namespace App;

use VitorF7\LoadMorePagination\LoadMorePagination;

class Post extends Model
{
    use LoadMorePagination;
}

// in a controller action or something you can use it like so
Post::paginateLoadMore(); // Loads 9 on first page and 3 every page after that
Post::paginateLoadMore(8, 4); // Loads 8 on first page and 4 every page after that
Post::paginateLoadMore(4, 4); // Loads 4 on first page and 4 every page after that. However at this point you could just simply use Post::paginate(4). This package is better used when you need to load different amount of items from the first page

// You can use it after you do an eager load of relationship too. At least simple loads for now as it has not been tested with something more complex
Post::with('categories')->paginateLoadMore();

如果您想在控制器、存储库等中使用它,您需要传递3个参数。

  • 第一个参数是初始加载的项目数
  • 第二个参数是后续加载的项目数
  • 第三个参数是要分页的模型

如下所示

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use VitorF7\LoadMorePagination\LoadMorePagination;

class PostsController extends Controller
{
    use LoadMorePagination;

    public function index()
    {
        $posts = $this->paginatedLoadMore(9, 3, new Post);

        return view('posts.index', compact('posts'));
    }
}

如果您没有传递模型,您将收到一个 VitorF7\LoadMorePagination\ModelClassRequiredException