首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel分页“三点”分离器定制

Laravel分页“三点”分离器定制
EN

Stack Overflow用户
提问于 2016-09-15 21:45:02
回答 3查看 9.5K关注 0票数 6

我目前正在使用Laravel5.3,并想知道是否有一个选择的定制三点编者。(跳过第9-10页,到迟)

示例

目前,如果有超过11页,这三个点就会启动.如果您的站点是响应性的,这是不安静的有用的。如果有很多页,那么它会分成两行。

Example2

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

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

EN

回答 3

Stack Overflow用户

发布于 2018-01-08 14:17:13

这是Laravel 5.5+的解决方案。它所做的事情如下:

  • 显示第一页和最后一页。
  • 显示当前页的前两页和下两页。
  • 只有在当前页大于4后,左边才会出现三个点。
  • 在当前页面小于4之后,只有三个点出现在右边(页数数)。
代码语言:javascript
复制
<!-- 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

输出:

第1页(首页)

第3页

第10页(最后一页)

票数 8
EN

Stack Overflow用户

发布于 2021-04-10 03:29:43

选项1 :您可以自定义默认文件,但不直接更改供应商文件。发布它们,然后对其添加修改。

代码语言:javascript
复制
php artisan vendor:publish --tag=laravel-pagination

此命令将自动创建文件夹/资源/视图/供应商/分页,您将获得要修改的文件。您可以在这里获得更多信息:拉拉分页

备选方案2:

也许您想要摆脱默认生成的文件。或者,您可能希望分配另一个文件来负责您的默认分页视图。

所有这些都是可能的,但是您需要通过在boot()方法中调用新的分页视图来通知AppServiceProvider这个操作:

代码语言:javascript
复制
use Illuminate\Pagination\Paginator;

public function boot(){
    Paginator::defaultView('your-pagination-view-file-name');

    Paginator::defaultSimpleView('your-pagination-view-file-name');
}

获取defaultView和defaultSimpleView的信息:拉拉分页

我已经创建了新的分页文件并添加到AppServiceProvider中。

代码语言:javascript
复制
@if ($paginator->hasPages())
<ul class="blog-pagenation">
    {{-- Previous Page Link --}}
    @if ($paginator->onFirstPage())
        <li class="disabled"><a>«</a></li>
    @else
        <li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
    @endif

    @if($paginator->currentPage() > 3)
        <li class="hidden-xs"><a href="{{ $paginator->url(1) }}">1</a></li>
    @endif
    @if($paginator->currentPage() > 4)
        <li><a>...</a></li>
    @endif
    @foreach(range(1, $paginator->lastPage()) as $i)
        @if($i >= $paginator->currentPage() - 2 && $i <= $paginator->currentPage() + 2)
            @if ($i == $paginator->currentPage())
                <li class="active"><a class="active">{{ $i }}</a></li>
            @else
                <li><a href="{{ $paginator->url($i) }}">{{ $i }}</a></li>
            @endif
        @endif
    @endforeach
    @if($paginator->currentPage() < $paginator->lastPage() - 3)
        <li><a>...</a></li>
    @endif
    @if($paginator->currentPage() < $paginator->lastPage() - 2)
        <li class="hidden-xs"><a href="{{ $paginator->url($paginator->lastPage()) }}">{{ $paginator->lastPage() }}</a></li>
    @endif

    {{-- Next Page Link --}}
    @if ($paginator->hasMorePages())
        <li><a href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
    @else
        <li class="disabled"><a>»</a></li>
    @endif
</ul>
@endif

通过使用这个,我可以在开始和结束时得到3个点,您必须根据您的主题定制类。

票数 2
EN

Stack Overflow用户

发布于 2017-04-28 16:37:04

添加到前面的响应中,一旦使用artisan命令publish生成供应商视图文件,您可以在该文件夹中创建一个新的文件,并将其调用(例如,)并放入以下代码:

代码语言:javascript
复制
@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

这三个点的代码的重要部分在{-数组链接-}部分。我认为这或多或少地做了你需要的,但可能需要额外的调整。

然后,您可以在视图中这样使用它:

代码语言:javascript
复制
<div class="pagination">
    @if ($users instanceof \Illuminate\Pagination\LengthAwarePaginator)
        {{ $users->links('vendor.pagination.custom') }}
    @endif
</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39520825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档