laravel 真实的搜索+分页

4c8rllxm  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(115)

我目前使用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()

sdnqo3pr

sdnqo3pr1#

您需要修改my_page_pagination_API如下

public function my_page_pagination_api(Request $request)
    {

    $pagination_data = DB::table('some_table')
    ->where('some_column', 'LIKE', $request->input('search')->paginate(15);

    // Return the paginated data as JSON response
    return response()->json([
        'pagination_table' => view('partials.table', ['pagination_data' => $pagination_data])->render(),
        'pagination_links' => $pagination_data->links()->render(),
    ]);
    }

字符串
和更新表内容

function updateContent(data) {
        $('#tableContainer').html(data.pagination_table); // Update the table data
        $('#paginationContainer').html(data.pagination_links); // Update the pagination links
    }


对于前端,您可以使用简单的on change或on input触发器来执行搜索,并进行一些验证,如字符计数或空格。

相关问题