📅  最后修改于: 2023-12-03 15:39:26.948000             🧑  作者: Mango
分页是 Web 应用程序中常见的功能,它允许我们将大量的数据分成多个页面来提高用户体验。Laravel 提供了非常方便的分页功能,但是默认情况下它并不支持获取查询参数,本文将介绍如何在 Laravel 分页中添加查询参数的方法。
在开始使用 Laravel 分页功能之前,我们需要先安装好 Laravel。
使用 Composer 命令进行安装:
composer create-project --prefer-dist laravel/laravel <your-project-name>
我们需要创建一个模型和数据表来模拟分页数据。
创建模型:
php artisan make:model Post -m
在 Post
模型中添加 title
和 content
字段:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
创建数据表:
php artisan migrate
在 database/seeds/DatabaseSeeder.php
中添加以下代码:
<?php
use App\Post;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
factory(Post::class, 100)->create();
}
}
在终端运行命令:
php artisan db:seed
在 routes/web.php
中添加以下代码:
Route::get('posts', 'PostController@index');
在终端输入以下代码:
php artisan make:controller PostController
在 app/Http/Controllers/PostController.php
中添加以下代码:
<?php
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index(Request $request)
{
$posts = Post::paginate(10)
->appends(['sort' => $request->sort, 'order' => $request->order]);
return view('posts.index', compact('posts'));
}
}
我们在 paginate()
方法中传入了每页显示 10 条记录的参数,并使用 appends()
方法来将我们需要传递的参数添加到分页链接中。
在 resources/views/posts/index.blade.php
中添加以下代码:
<!DOCTYPE html>
<html>
<head>
<title>Posts</title>
</head>
<body>
<table>
<thead>
<tr>
<th>
<a href="?sort=title&order={{ $posts->appends(request()->query())->links()->first()->url($posts->appends(request()->query())->links()->first()->getPageName(), 'asc') }}">Title</a>
</th>
<th>
<a href="?sort=created_at&order={{ $posts->appends(request()->query())->links()->first()->url($posts->appends(request()->query())->links()->first()->getPageName(), 'asc') }}">Created At</a>
</th>
</tr>
</thead>
<tbody>
@foreach($posts as $post)
<tr>
<td>{{ $post->title }}</td>
<td>{{ $post->created_at }}</td>
</tr>
@endforeach
</tbody>
</table>
{{ $posts->appends(request()->query())->links() }}
</body>
</html>
在视图中,我们使用 appends()
方法传递了查询参数,并使用 getPageName()
方法获取当前页面名称。我们在表头中添加了链接,用于排序,并使用 url()
方法获取链接地址。
在视图中,我们使用了 appends()
方法将查询参数传递了过去,并使用 links()
方法来生成分页链接。
在浏览器中输入 http://localhost:8000/posts
,即可查看分页效果。可以使用以下链接来测试分页:
http://localhost:8000/posts?sort=title&order=asc
http://localhost:8000/posts?sort=title&order=desc
http://localhost:8000/posts?sort=created_at&order=asc
http://localhost:8000/posts?sort=created_at&order=desc
本文介绍了如何在 Laravel 分页中添加查询参数的方法。这样可以让我们编写出更加灵活、更加智能的分页功能,提升用户体验和系统性能。