代码之家  ›  专栏  ›  技术社区  ›  Sachin

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

  •  1
  • Sachin  · 技术社区  · 7 年前

    我已经用Laravel创建了一个搜索页面,上面有“文本搜索”过滤器当鼠标离开过滤器时,页面的javascript会触发ajax调用,然后返回结果。

    因为我还启用了分页(使用Ajax),所以当我单击第2页(一个看起来像: http://project.test/customers?page=2 )顶部的过滤器保留以前输入的任何文本,搜索结果是 持有 ,这正是我需要的!

    现在的问题是:

    我的数据库有两个主表。

    1. 客户

    2. 购买

    关系: 一个顾客可以买很多东西 任何给定的购买都属于一个客户

    我已经建立了一个搜索页面,这样用户就可以搜索符合给定搜索条件的客户(例如,那些属于特定城市或国家的客户)。

    在显示所有匹配客户记录的搜索筛选器下的表中,我有一个列,其中有一个purchase s按钮,它将用户带到该特定客户的购买页面(这里,purchases按钮指向project.test/customers/{{id}表单的链接)

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

    现在,我在这个购买页面上有一个“返回”按钮,链接如下:

    项目.测试/客户

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

    这就是问题所在!!!

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

    搜索过滤器将被清除,而页面将显示所有客户。因此,用户必须再次输入所有的搜索条件-这对用户来说很烦人,因为他/她经常需要更改 批量 在给定的一组客户中,与给定的一组搜索条件相匹配的采购记录,并且在导航到客户的采购页,然后导航回主搜索页时,不必一次又一次地重新输入相同的条件。

    考虑到这个问题,我的问题是,在概念上,用Laravel,有没有可能从一个搜索页面转到另一个页面,然后,用某种方法返回到原始搜索页面,搜索过滤器和结果,显示从以前,仍然存在-这将是一个超级有用的东西!

    我在其他网站上也看到过这种情况,可能使用了其他web技术,但我不确定如何使用laravel/php开始/从何处开始?

    感谢您的帮助,谢谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Brian Lee    7 年前

    将搜索条件存储在用户的 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">
    
    推荐文章