【问题标题】:Laravel show all links in paginatorLaravel 在分页器中显示所有链接
【发布时间】:2018-12-10 17:41:58
【问题描述】:

从 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 变量似乎已经删除了多余的页面。

【问题讨论】:

  • 为什么不用有多少页的信息来倒数呢?

标签: laravel laravel-5.7


【解决方案1】:

分页器使用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

【讨论】:

  • 我已经使用了自定义视图,我在问题文本中添加了该视图。我一开始就不把它放在这里很糟糕。
猜你喜欢
  • 2022-01-18
  • 2021-10-06
  • 2017-12-23
  • 2021-12-08
  • 2020-05-27
  • 1970-01-01
  • 2017-11-10
  • 2012-12-05
  • 2014-04-19
相关资源
最近更新 更多