Laravel分页“三点”分隔符自定义

use*_*823 5 php laravel twitter-bootstrap-3 laravel-5.3

我目前正在使用Laravel 5.3,想知道是否可以自定义“三点”销毁器。(跳过第9-10页,这太晚了)

当前,如果有11个以上的页面,则将启动三个点...如果您的站点响应,这不是安静的方法。如果页面太多,则分为两行。

例2

我找不到关于$ resource-> links()选项的任何信息。但是,如果有请告诉我!非常感激。

编辑:它与以下功能有关:vendor / laravel / framework / src / Illuminate / Pagination / LengthAwarePaginator.php(页面:128,render())。当前函数不支持第二个变量。所以我想我必须重建它?

Joh*_*nny 5

这是 Laravel 5.5+ 的解决方案。这是它的作用:

  • 显示第一页和最后一页。
  • 显示当前页面的前两页和后两页。
  • 三个点只在当前页大于 4 后出现在左边。
  • 三个点仅在当前页面小于 4 -(页数)后出现在右侧。
<!-- Pagination Elements -->
@foreach ($elements as $element)
    <!-- Array Of Links -->
    @foreach ($element as $page => $url)
        <!--  Use three dots when current page is greater than 4.  -->
        @if ($paginator->currentPage() > 4 && $page === 2)
            <li class="page-item disabled"><span class="page-link">...</span></li>
        @endif

        <!--  Show active page else show the first and last two pages from current page.  -->
        @if ($page == $paginator->currentPage())
            <li class="page-item active"><span class="page-link">{{ $page }}</span></li>
        @elseif ($page === $paginator->currentPage() + 1 || $page === $paginator->currentPage() + 2 || $page === $paginator->currentPage() - 1 || $page === $paginator->currentPage() - 2 || $page === $paginator->lastPage() || $page === 1)
            <li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
        @endif

        <!--  Use three dots when current page is away from end.  -->
        @if ($paginator->currentPage() < $paginator->lastPage() - 3 && $page === $paginator->lastPage() - 1)
            <li class="page-item disabled"><span class="page-link">...</span></li>
        @endif
    @endforeach
@endforeach
Run Code Online (Sandbox Code Playgroud)

输出:

第 1 页(第一页)

第 3 页

第 10 页(最后一页)


Bit*_*law 1

添加到上一个响应中,一旦使用 artisan 命令php artisanvendor:publish生成供应商视图文件,您就可以在该文件夹中创建一个新文件并调用它,例如custom.blade.php并输入以下代码:

@if ($paginator->hasPages())
<ul class="custom-pagination">
    {{-- Previous Page Link --}}
    @if ($paginator->onFirstPage())
        <li class="disabled pageNumber"><span>&laquo; Prev</span></li>
    @else
        <li><a class="pageNumber" href="{{ $paginator->previousPageUrl() }}" rel="prev">&laquo;</a></li>
    @endif

    {{-- Pagination Elements --}}
    @foreach ($elements as $element)
        {{-- Array Of Links --}}
        @if (is_array($element))
            @foreach ($element as $page => $url)
                @if ($page === $paginator->currentPage())
                    <li class="active pageNumber"><span>{{ $page }}</span></li>
                @elseif (($page === $paginator->currentPage() + 1 || $page === $paginator->currentPage() + 2)
                 || $page === $paginator->lastPage())
                    <li><a class="pageNumber" href="{{ $url }}">{{ $page }}</a></li>
                @elseif ($page === $paginator->lastPage()-1)
                    <li class="disabled"><span>...</span></li>
                @endif
            @endforeach
        @endif
    @endforeach

    {{-- Next Page Link --}}
    @if ($paginator->hasMorePages())
        <li><a class="pageNumber" href="{{ $paginator->nextPageUrl() }}" rel="next">Next &raquo;</a></li>
    @else
        <li class="disabled pageNumber"><span>Next &raquo;</span></li>
    @endif
</ul>@endif
Run Code Online (Sandbox Code Playgroud)

三个点的代码的重要部分位于 {{-- Array Of Links --}} 部分。我认为这或多或少满足了您的需要,但可能需要额外的调整。

然后你可以在你的视图中使用它,如下所示:

<div class="pagination">
    @if ($users instanceof \Illuminate\Pagination\LengthAwarePaginator)
        {{ $users->links('vendor.pagination.custom') }}
    @endif
</div>
Run Code Online (Sandbox Code Playgroud)