在Laravel中导航回搜索页面时记住结果

时间:2019-01-01 20:17:41

标签: php laravel laravel-session

我使用Laravel创建了一个搜索页面,该页面的顶部有“要搜索的文本”过滤器。当鼠标离开过滤器时,页面的JavaScript会触发Ajax调用,然后返回结果。

由于我还启用了分页功能(使用Ajax),因此当我单击第2页(链接看起来像http://project.test/customers?page=2)时,顶部的过滤器会保留以前输入的所有文本,搜索结果为< em> hold ,这正是我所需要的!

现在是问题:

我的数据库有两个主表。

  1. 客户

  2. 购买

关系: 客户可以进行多次购买 尽管任何给定的购买都属于单个客户

我已经建立了搜索页面,以便用户可以搜索与给定搜索条件相匹配的客户(例如,属于特定城市或国家/地区的客户)。

在显示所有匹配客户记录的搜索过滤器下方的表格中,我有一列带有“购买”按钮,然后将用户带到该特定客户的购买页面(在这里,“购买”按钮会转到表格的链接) project.test / customers / {{id}}

{id}经过一条路线,然后加载一个新页面,该页面显示该特定客户的所有购买。

现在,我在此购买页面上有一个“返回”按钮,该按钮带有以下链接:

project.test / customers

然后将加载原始搜索页面(但重新加载)。

这就是问题!

因为页面是重新加载的(使用链接:project.test / customers)

将清除搜​​索过滤器,而是在页面上显示所有客户。因此,用户随后必须重新输入所有搜索条件-这对用户来说很烦,因为他/她经常需要更改 批处理 给定一组客户的购买记录,它们与给定一组搜索条件相匹配-导航到客户的购买页面然后又返回时,不必一次又一次地输入相同的条件进入主搜索页面。

鉴于此问题,我的问题是,从概念上讲,Laravel是否可以从搜索页面转到另一页面,然后使用某种方法返回到原始搜索页面以查找搜索过滤器,以及从以前显示到现在的结果? -这将是一件超级有用的事情!

我已经在其他站点(可能使用其他Web技术)上看到了这一点,但是我不确定如何从Laravel / PHP开始/从哪里开始?

感谢您的帮助,在此先感谢您!

1 个答案:

答案 0 :(得分:1)

将搜索条件存储在用户的session中,以便在他们向后导航时将其传递回搜索页面。

假设您有一个具有搜索路线功能的控制器:

public function search (Request $request)
{
    // store the search criteria 
    session(['search_criteria' => $request->input()]);

    // return the results
}

然后在另一个控制器功能中,将原始参数添加到响应中:

public function someRouteMethod (Request $request)
{
    return redirect()->with('search_criteria', session('search_criteria'))->to('/search');
}

然后在搜索页面中用$search_criteria数据重新填充表单:

<input value="{{ !empty($search_criteria) ? $search_criteria['foo'] : '' }}" name="foo">