gpt4 book ai didi

php - 如何在 laravel 8 中自定义默认分页?

转载 作者:行者123 更新时间:2023-12-02 18:42:24 25 4
gpt4 key购买 nike

我正在构建一个应用程序,其中某些页面需要分页。我已经为我的应用程序的分页设计了一个设计。但是我如何将它与 laravel paginate 一起使用呢?

我这样做是为了在 Controller 中分页

 $products= Products::paginate(9);

在我的 Blade 中,这是我想要的分页 HTML

          <div class="row pt-3 pb-5">
<div class="col-12 d-flex justify-content-end">
<div class="pagination-btn-box">
<button class="active-pagination-btn">1</button>
<button>2</button>
<button>3</button>
<button>4</button>
<button>5</button>
<button>...</button>
<button>Next</button>
</div>
</div>
</div>

现在,我如何使用 laravel 实现分页?

最佳答案

在 Controller 返回 View 中

return view('blade file name',compact('products'))

在 Blade 中做如下

<div class="container">
@foreach ($products as $product)
{{ $product->fieldname}}
@endforeach
</div>

{{ $products->links() }}

$products->links() 将生成默认分页。

如果你想自定义分页模板,那么运行下面的命令

php artisan vendor:publish --tag=laravel-pagination

这将在 views/vendor/pagination 中生成文件夹

default.blad.php 如下所示

@if ($paginator->hasPages())
<nav>
<ul class="pagination">
{{-- Previous Page Link --}}
@if ($paginator->onFirstPage())
<li class="disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
<span aria-hidden="true">&lsaquo;</span>
</li>
@else
<li>
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">&lsaquo;</a>
</li>
@endif

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

{{-- Array Of Links --}}
@if (is_array($element))
@foreach ($element as $page => $url)
@if ($page == $paginator->currentPage())
<li class="active" aria-current="page"><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() }}" rel="next" aria-label="@lang('pagination.next')">&rsaquo;</a>
</li>
@else
<li class="disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
<span aria-hidden="true">&rsaquo;</span>
</li>
@endif
</ul>
</nav>
@endif

不过,如果您想使用自己的分页 View ,则可以。首先,您需要在服务提供商中注册您的自定义 View

<?php

namespace App\Providers;

use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}

/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//defaultStringLength changed to 191 to support mysql below 5.7
Schema::defaultStringLength(191);



Paginator::defaultView('custom-pagination');

Paginator::defaultSimpleView('simple-pagination');

}
}

所以在我的示例中,我创建了两个名为 custom-pagination.blade.phpsimple-pagination.blade.php

的 Blade 模板

引用:https://laravel.com/docs/8.x/pagination#displaying-pagination-results

关于php - 如何在 laravel 8 中自定义默认分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67839557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com