【问题标题】:Remembering Results When Navigating Back to Search Page in Laravel在 Laravel 中导航回搜索页面时记住结果
【发布时间】:2019-01-01 20:17:41
【问题描述】:

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

由于我还启用了分页(使用 Ajax),所以当我单击第 2 页(一个类似于:http://project.test/customers?page=2 的链接)时,顶部的过滤器会保留任何以前输入的文本,并且搜索结果是 举行,这正是我所需要的!

现在的问题:

我拥有的数据库有两个主表。

  1. 客户

  2. 购买

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

我构建了一个搜索页面,以便用户可以搜索符合给定搜索条件的客户(例如,属于特定城市或国家的客户)。

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

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

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

project.test/customers

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

这是问题!!!

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

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

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

我在其他网站上看到过这样做,可能使用其他网络技术,但我只是不确定如何开始/从哪里开始使用 Laravel/PHP 做这件事?

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

【问题讨论】:

    标签: php laravel laravel-session


    【解决方案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">
    

    【讨论】:

    • 感谢 Digital Drifter!这非常有效。我不知道用户会话功能。只在 Laravel 上待了 4 周。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多