当我处理一个搜索的帖子请求时,我得到的所有结果都是分页的,当我尝试导航到第二个页面http://localhost/project/admin/search?page=2时
该路由不支持GET方式,支持方式:POST.
links()函数使用GET来在页面中导航,我该如何解决?
路线:Route::post('search',['as' => 'cat.search','uses' =>'CatController@search']);
功能:
public function search(Request $request)
{
$search = $request->get('search');
if($search != ''){
$cat = Tombe::where('name','like', '%'.$search.'%')
->orwhere('description','like', '%'.$search.'%')
->paginate(15);
if(count($cat)>0){
return view('admin.cat.search', compact('cat'));
}else{
return back()->with('error','No results Found');
}
}else{
return back()->with('error','Enter Search Name');
}
}
1条答案
按热度按时间zwghvu4y1#
正如Tim刘易斯所指出的,paginator默认情况下处理GET请求。为了使其使用POST请求,您需要为Paginator的
links()
方法提供自定义视图,将每个<a>
标记替换为<form>
。例如,默认视图在the github repo沿着some others that use bootstrap or tailwind.中可见
如果你使用的不是laravel 10,只需更改分支。
如果你让laravel 10使用
POST
请求,它的默认分页会是这样的。resources/views/pagination/using-post.blade.php
然后,当您使用
links()
方法时,您需要将这个自定义分页视图传递给分页器。