laravel 的分頁是非常簡單易用的,但是有一點不是非常理想,
默認的分頁生成的鏈接是
users?page=1
這種形式對SEO不是非常友好(理論上)
那么我們可能就需要像
users/page/1
這種形式的分頁鏈接
那么怎么做到呢?
我現在有兩種方式實現的方式
第一種是我之前項目中采用的,直接上正則
直接在blade中進行正則替換
{!!?preg_replace("~(/?)?page=~",?'/page/',?$users->render())?!!}
該正則應該有優化的空間,還望不吝賜教。
當然對應的路由也要相應的配置,很簡單,就不展開了。
這種方法效果是實現了,但是真的很沒有laravel的風格啊
laravel的風格是什么? composer , package啊
所以來介紹一下第二種方法
laravel-paginateroute
使用方法非常簡單,以下摘自readme
第一步
//?要注意對應版本,可到https://packagist.org?方便查看 composer?require?spatie/laravel-paginateroute
第二步
注冊,
//?config/app.php 'providers'?=>?[ ????... ????'SpatiePaginateRoutePaginateRouteServiceProvider', ]; 'aliases'?=>?[ ????... ????'PaginateRoute'?=>?'SpatiePaginateRoutePaginateRouteFacade', ];
第三步
//?app/Providers/RouteServiceProvider.php use?PaginateRoute; //?... public?function?boot(Router?$router) { ????PaginateRoute::registerMacros(); ????parent::boot($router); }
使用
在路由中
//?app/Http/routes.php //?Generates?/users?&?/users/page/{page} Route::paginate('users',?'UsersController@index');
這樣會生成兩條路由
/users /users/page/{page}
然后在controller中正常按照laravel的分頁寫就可以
在頁面中這樣使用,這個是simplePaginate的對應寫法
@if(PaginateRoute::hasPreviousPage()) ??<a>Previous</a> @endif @if(PaginateRoute::hasNextPage($users)) ??<a>Next</a> @endif
推薦:《laravel教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦