📅  最后修改于: 2023-12-03 15:37:41.265000             🧑  作者: Mango
在Laravel中,如果我们需要在同一页面上展示多个分页,该如何处理呢?本文将介绍如何使用多个分页,使其在同一页面上正常运行。
首先,我们需要在控制器中创建多个函数,每个函数都处理分页。
use App\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index(Request $request)
{
$users = User::paginate(10);
return view('users.index', compact('users'));
}
public function search(Request $request)
{
$users = User::where('name', 'LIKE', '%' . $request->search . '%')->paginate(10);
return view('users.search', compact('users'));
}
public function filter(Request $request)
{
$users = User::where('age', '>', $request->age)->paginate(10);
return view('users.filter', compact('users'));
}
}
以上代码中,我们创建了三个函数:index
、search
和filter
。每个函数都返回一个包含分页内容的视图。在这里,我们使用了paginate()
函数来处理分页。我们将每页显示的数量设置为10,但你可以根据自己的需要进行更改。
接下来,我们需要为每个分页创建一个路由。我们可以使用Laravel中的路由来设置这些路由。在routes/web.php
文件中添加以下代码:
Route::get('/users', [UserController::class, 'index'])->name('users.index');
Route::post('/users/search', [UserController::class, 'search'])->name('users.search');
Route::post('/users/filter', [UserController::class, 'filter'])->name('users.filter');
以上代码中,我们使用了get()
和post()
函数来创建路由。get()
用于访问页面,而post()
用于处理表单提交。
接下来,我们创建视图来显示分页内容。我们可以使用Laravel提供的@extends
和@section
指令。在视图中,将分页链接放在不同的<div>
中,以便在页面中独立地控制每个分页。以下代码演示了如何在视图中使用分页:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
Users
</div>
<div class="card-body">
<ul>
@foreach ($users as $user)
<li>{{ $user->name }}</li>
@endforeach
</ul>
</div>
<div class="card-footer">
{{ $users->links() }}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
Search Users
</div>
<div class="card-body">
<form method="POST" action="{{ route('users.search') }}">
@csrf
<input type="text" name="search" placeholder="Search...">
<button type="submit" class="btn btn-primary">
Search
</button>
</form>
</div>
</div>
<div class="card mt-4">
<div class="card-header">
Filter Users
</div>
<div class="card-body">
<form method="POST" action="{{ route('users.filter') }}">
@csrf
<input type="number" name="age" placeholder="Age...">
<button type="submit" class="btn btn-primary">
Filter
</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
在上述代码中,我们有一个包含一个分页链接的<div>
。为了在不同的页面中显示不同的分页内容,我们需要在每个视图中独立地设置分页链接。以下代码演示如何在search.blade.php
中使用分页链接:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-header">
Search Results
</div>
<div class="card-body">
<ul>
@foreach ($users as $user)
<li>{{ $user->name }}</li>
@endforeach
</ul>
</div>
<div class="card-footer">
{{ $users->appends(request()->input())->links() }}
</div>
</div>
</div>
</div>
</div>
@endsection
在上面的代码中,我们使用了appends()
函数来向分页链接中添加搜索参数。
通过上述步骤,我们可以在同一页面中使用多个分页,并在每个页面中独立地处理分页内容。如果你需要添加另一个分页,请按照上述步骤操作即可。
以上就是如何在同一页面 Laravel 中使用多个分页。希望本文能够帮助到你。