Laravel 在分页器中显示所有链接

Laravel show all links in paginator

自 Laravel 5.7 起,分页器 links() 方法在调用时仅显示减少的页数。可以使用onEachSide($count)方法自定义链接数。

‹‹ ‹ 1 2 ... 47 48 49 50 51 52 53 ... 102 103 › ››

我想使用 html <select>.

显示每个页面以便制作页面选择器下拉菜单

调用 onEachSide(9999) 确实有效,但它看起来很脆弱,并且可能会在我正在编写的应用程序可以达到的高页数上中断。

获取所有页面链接的简洁方法是什么?

编辑:我正在使用自定义视图,如下所示:

@if ($paginator->hasPages())
    <ul class="pagination">
        {{-- Previous Page Link --}}
        @if ($paginator->onFirstPage())
            <li class="disabled">&lsaquo;&lsaquo;</li>
            <li class="disabled">&lsaquo;</li>
        @else
            <li><a href="{{ $paginator->toArray()['first_page_url'] }}">&lsaquo;&lsaquo;</a></li>
            <li><a href="{{ $paginator->previousPageUrl() }}">&lsaquo;</a></li>
        @endif

        {{--Pagination Elements --}}
        @foreach ($elements as $element)
            @if (is_string($element))
                <li class="disabled"><span>{{ $element }}</span></li>
            @endif

            @if (is_array($element))
                @foreach ($element as $page => $url)
                    @if ($page == $paginator->currentPage())
                        <li class="active"><span>{{ $page }}</span></li>
                    @else
                        <li><a href="{{ $url }}">{{ $page }}</a></li>
                    @endif
                @endforeach
            @endif
        @endforeach

        {{-- Next Page Link --}}
        @if ($paginator->hasMorePages())
            <li><a href="{{ $paginator->nextPageUrl() }}">&rsaquo;</a></li>
            <li><a href="{{ $paginator->nextPageUrl() }}">&rsaquo;&rsaquo;</a></li>
        @else
            <li class="disabled">&rsaquo;</li>
            <li class="disabled"><span>&rsaquo;&rsaquo;</li>
        @endif
    </ul>
@endif

$elements 变量似乎已经删除了多余的页面。

分页器使用 bootstrap-4 blade view 呈现页面。此视图始终实现三重点。
您可以创建一个自定义视图来呈现没有任何三点项目的所有分页页面,并将此视图作为第一个参数传递给 links function.


更新:您使用的视图与 Laravel 中的视图完全相同。您不应该使用 $element 变量,因为它会使用三重点元素进行窗口化。

您应该使用分页 lastpage 变量并自己遍历所有页面。例如,像这样:

{{-- Pagination Elements --}}
@for ($page = 1; $page <= $paginator->lastPage(); $page++)
    @if ($page == $paginator->currentPage())
        <li class="active"><span>{{ $page }}</span></li>
    @else
        <li><a href="{{ $paginator->url($page) }}">{{ $page }}</a></li>
    @endif
@endforeach