mayoz / pagination
为 Laravel 分页创建美观的 URL
Requires
- php: >=5.4.0
- illuminate/pagination: 5.0.*
- illuminate/routing: 5.0.*
- illuminate/support: 5.0.*
This package is auto-updated.
Last update: 2024-08-27 22:38:52 UTC
README
创建美观且SEO友好的分页链接。
安装和需求
首先,您需要将包添加到 composer.json 文件的 require 属性中
{ "require": { "mayoz/pagination": "dev-master" }, }
然后,从您的命令行运行 composer update
。最后,打开 config/app.php
文件。在 providers 数组中找到 'Illuminate\Pagination\PaginationServiceProvider'
并将其替换为 'Mayoz\Pagination\PaginationServiceProvider'
。
使用方法
这非常简单。考虑以下示例。我接受您提供模型。创建路由、控制器和视图。
路由
在 app\Http\routes
中定义路由
<?php $router->get('articles/{page?}', [ 'as' => 'articles', 'uses' => 'HomeController@articles' ]);
控制器
酷。不要写额外的代码!
<?php namespace App\Http\Controllers; use App\Article; class HomeController { public function articles() { $articles = Article::paginate(5); return view('articles', compact('articles')); } }
视图
核心分页类未更改。可以使用 Laravel 提供的所有功能。
<ul> @foreach ($articles as $article) <li>{{ $article->title }}<li> @endforeach </ul> {!! $articles->links() !!}
您还可以使用;
{!! $articles->appends(['sort' => 'vote'])->links() !!}
{!! $articles->links('pagination.special') !!}
- 或未来的方法...
输出示例
以下输出已生成。我认为这些示例已经足够。尽可能SEO友好。不过,请检查您的URL。如果需要,请使用 canonical
元数据。
使用如 {page?},如果路由末尾有页面模式。
<?php $router->get('articles/{page?}', [ 'as' => 'articles', 'uses' => 'HomeController@articles' ]);
输出
- /articles
- /articles/2
- /articles/3
如果路由中间有 {page} 模式,不需要问号。
<?php $router->get('module/{page}/articles', [ 'as' => 'module.articles', 'uses' => 'HomeController@articles' ]);
输出
- /module/1/articles
- /module/2/articles
- /module/3/articles
使用特殊路由
如果您需要使用与当前路由不同的路由,请使用 route()
方法。此方法接受路由名称和路由参数。
注意:第二个参数是可选的。此参数用于特殊路由参数。
路由
路由不同但使用相同的控制器和视图。
<?php $router->get('articles', [ 'as' => 'articles', 'uses' => 'HomeController@articles' ]); $router->get('articles/{module}/{page?}', [ 'as' => 'articles.paginate', 'uses' => 'HomeController@articles' ]);
控制器
与前面的定义相同。添加了特殊路由(其名称为 article.paginate)用于分页URL生成器。除了 {page} 之外,此路由需要一个参数(模块)。
注意:自动设置当前路由上的路由参数。
<?php namespace App\Http\Controllers; use App\Article; class HomeController { public function articles() { $articles = Article::paginate(5); $articles->route('articles.paginate', [ 'module' => 'photo' ]); return view('articles', compact('articles')); } }
输出
- /articles/photo
- /articles/photo/2
- /articles/photo/3
贡献
安装并使用此包。如果发现错误,请修复并在 develop 分支上发送拉取请求。
版权和许可
此包由 Sercan Çakır 编写。它发布在 MIT 许可下。有关详细信息,请参阅 LICENSE 文件。