我目前使用Laravel的分页,每当我需要一个搜索功能时,我只需添加一个搜索框,当提交时,将值保存在后端的会话键中,然后它用过滤后的查询刷新页面。
现在我想改变它是真实的搜索,使网页不会刷新。
那么我应该只使用JS而不使用Laravel的分页,还是将两者结合起来?也就是说,在API调用的控制器中有一个相同的方法(通过fetch/ AJAX ),其中一个返回视图,另一个返回JSON格式的分页数据:
public function my_page(Request $request)
{
// some more stuff to gather
return view('user.index', [
'pagination_data' => DB::table('some_table')->paginate(15)
'some_other_data' => $some_other_data
]);
}
字符串
和该视图的API端点:
public function my_page_pagination_api(Request $request)
{
return response()->json([
'pagination_data' => DB::table('some_table')->where('some_column', 'LIKE', $request->input('search')->paginate(15);
]);
}
型
然后我通过JS调用该端点并真实的更新HTML,而不是刷新页面(表和->links()
)
1条答案
按热度按时间sdnqo3pr1#
您需要修改my_page_pagination_API如下
字符串
和更新表内容
型
对于前端,您可以使用简单的on change或on input触发器来执行搜索,并进行一些验证,如字符计数或空格。