📜  在同一页面 laravel 中使用多个分页 - PHP (1)

📅  最后修改于: 2023-12-03 15:37:41.265000             🧑  作者: Mango

在同一页面 Laravel 中使用多个分页 - PHP

在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'));
    }
}

以上代码中,我们创建了三个函数:indexsearchfilter。每个函数都返回一个包含分页内容的视图。在这里,我们使用了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 中使用多个分页。希望本文能够帮助到你。