首页 > 解决方案 > Laravel - 带有过滤器和旧输入的搜索表单

问题描述

我正在开发一个带有过滤器的搜索表单,例如从这个列表中选择一个性别,选择一个区域等,这些过滤器应该动态地应用于搜索查询。表单通过控制器中的发布请求提交。我现在的问题是:如何将查询结果从数据库返回到搜索页面,保持相同的漂亮 url,此外还返回旧输入以使用旧数据预填充表单?

问候。

编辑:

我尝试过这样的事情:

public function advancedSearch()
{
    $users = Session::get('users');

    return View("find-match.show", compact("users"));
}



public function getUsersAdvancedSearch(Request $request)
{
    $users = User::select();

    //Only active users excluding own profile.
    $users->where('is_activated', 1)
          ->where('id', '<>', Auth::user()->id);

    //Add gender.
    if($request->has('form_genders'))
    {
        $users->whereIn('gender_id', $request->form_genders);
    }

    //Get matching users.   
    $users = $users->Paginate(self::paginate);


    Session::put('users', $users);


    return redirect()->route('match.advancedSearch')->withInput();
}

标签: javascriptphpeloquent

解决方案


使用资源控制器和 laravel 的“旧”功能来保留旧的帖子数据以供重新填充,并使用相同的 url

https://laravel.com/docs/5.6/controllers#resource-controllers

https://laravel.com/docs/5.6/requests#old-input


推荐阅读