如何在 laravel 6.x 中美化分页 URL



我有一个使用分页的网站。但是该网址正在制作分页网址,例如

http://website.com/user?page=2

但我想美化它

http://website.com/user/2

我正在使用 laravel 6。 我该怎么做?

漂亮的拉拉维尔分页

没有官方方法来美化拉拉维尔分页代码。所以我制作了自己的代码,最后它开始工作了。

目标

www.website.com/user?page=1 → →→→ www.website.com/user/1

步骤1:

途中 :

Route::get('/user/{page?}', 'MainController@index')->where('page', '[0-9]+')->name('areasearch');
  • 其中('page', '[0-9]+'( 此代码用于维护页面参数仅接受数值。
  • {page?} 这里 ? 问号用于使值可选。

步骤2:在主控制器中:

public function index(Request $request){
if(isset($request->page) && $request->page<1)
$page = 1;
else
$page = $request->page;
$user = User::ALL();
$data=$this->paginateArray(user,$page);
$data=$data->setPath($request->url());
return view('index')->with('data',$data);
}
public function paginateArray($user='', $page = 1)
{
$currentPage = $page;
$user_collection = collect($user);
$perPage = 50;
$paginatedItems = new LengthAwarePaginator($user_collection->forPage($currentPage, $perPage) , $user_collection->count(), $perPage, $page);
return $paginatedItems;
}
public function paginate_with_custom_path($data)
{
$links = $data->links('pagination.paginator');
$patterns = '#?page=#';
$replacements = '/';
$one = preg_replace($patterns, $replacements, $links);
$pattern2 = '#/([1-9]+[0-9]*)/([1-9]+[0-9]*)#';
$replacements2 = '/$2';
$paginate_links = preg_replace($pattern2, $replacements2, $one);
return $paginate_links;
}

步骤3:查看:

use AppHttpControllersMainController; $MainController= new MainController(); 
@extends('master')
@section('maincontent')
{!!$MainController->paginate_with_custom_path($data)!!}
@endsection

就这样。我们已成功更改网址。

相关内容

  • 没有找到相关文章

最新更新