amamarul/laravel-paginator

Laravel 集合或数组分页器

1.0.1 2017-03-15 01:00 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:55:16 UTC


README

为数组或集合创建分页

安装

Composer require

$ composer require amamarul/laravel-paginator

将提供者添加到config/app.php中

Amamarul\Paginator\PaginatorServiceProvider::class,

使用方法

在控制器中

  • 数组
use Amamarul\Paginator\Paginator;
use Illuminate\Http\Request;

public function index(Request $request)
{
    $currentPage  = isset($request['page']) ? (int) $request['page'] : 1;
    $perPage      = 1;
    $path         = $request->path();

    $items = array_map(function ($value) {
        return [
        'name' => 'User #' . $value,
        'url'  => '/user/' . $value,
        ];
        }, range(1,1000));

        $paginator = new Paginator($items);
        $paginator = $paginator->paginate($currentPage,$perPage, $path);

    return view('index')->with('paginator', $paginator);
}
  • 集合
use App\User;
use Amamarul\Paginator\Paginator;
use Illuminate\Http\Request;

public function index(Request $request)
{
    $currentPage  = isset($request['page']) ? (int) $request['page'] : 1;
    $perPage      = 1;
    $path         = $request->path();

    $items = User::with('profile')->get()->sortBy('profile.name');

    $paginator = new Paginator($items);
    $paginator = $paginator->paginate($currentPage,$perPage, $path);

    return view('index')->with('paginator', $paginator);
}

在 Blade 视图中(index.blade.php)

@foreach ($paginator->items() as $element)
    <a href="{!!$element['url']!!}"><h3>{!!$element['name']!!}</h3></a>
@endforeach

{!! $paginator->render() !!}

自定义页面名称

默认情况下,URL 中有 page 名称 http://127.0.0.1:8000/?page=3。如果您想更改页面名称,只需添加一个带有该名称的第四个参数即可。例如

use App\User;
use Amamarul\Paginator\Paginator;
use Illuminate\Http\Request;

public function index(Request $request)
{
    $currentPage  = isset($request[$pageName]) ? (int) $request[$pageName] : 1;
    $perPage      = 1;
    $path         = $request->path();
    $pageName     = 'custom-name';

    $items = User::with('profile')->get()->sortBy('profile.name');

    $paginator = new Paginator($items);
    $paginator = $paginator->paginate($currentPage,$perPage, $path, $pageName);

    return view('index')->with('paginator', $paginator);
}

欢迎提出改进意见

Maru Amallo-amamarul 创建