ihp*_*nce 3 php mysql pagination laravel
我正在构建一个应用程序,其中某些页面需要分页。我已经为我的应用程序的分页做了设计。但是我如何将它与 laravel paginate 一起使用呢?
我在控制器中为分页做了这个
$products= Products::paginate(9);
Run Code Online (Sandbox Code Playgroud)
在我的刀片中,这是我想要的分页 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>
Run Code Online (Sandbox Code Playgroud)
现在,我如何使用 Laravel 来实现分页?
在控制器返回视图中
return view('blade file name',compact('products'))
Run Code Online (Sandbox Code Playgroud)
在刀片中像下面一样
<div class="container">
@foreach ($products as $product)
{{ $product->fieldname}}
@endforeach
</div>
{{ $products->links() }}
Run Code Online (Sandbox Code Playgroud)
$products->links()将生成默认分页。
如果您想自定义分页模板,请运行以下命令
php artisan vendor:publish --tag=laravel-pagination
Run Code Online (Sandbox Code Playgroud)
这将在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">‹</span>
</li>
@else
<li>
<a href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">‹</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')">›</a>
</li>
@else
<li class="disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
<span aria-hidden="true">›</span>
</li>
@endif
</ul>
</nav>
@endif
Run Code Online (Sandbox Code Playgroud)
不过,如果您想使用自己的分页视图,那么这是可能的。首先您需要在服务提供商中注册您的自定义视图
<?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');
}
}
Run Code Online (Sandbox Code Playgroud)
所以在我的示例中,我创建了两个刀片模板,名为custom-pagination.blade.php和simple-pagination.blade.php
参考:https: //laravel.com/docs/8.x/pagination#displaying-pagination-results