Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 浏览器返回按钮后加载上次搜索_Laravel_Octobercms - Fatal编程技术网

Laravel 浏览器返回按钮后加载上次搜索

Laravel 浏览器返回按钮后加载上次搜索,laravel,octobercms,Laravel,Octobercms,我在10月份有自己的插件CMS,它有一个onFilter()函数返回并显示带有数据的部分。当用户单击名称时,它会将他重定向到详细信息页面。当用户在浏览器中单击“后退”按钮时,我想显示他的最后一次搜索 我在onFilter()方法中尝试了类似于Session::push('data',$data)的方法,在onInit()中尝试了Session::get('data'),但没有成功$data是一个酒吧列表 有人有同样的问题吗 编辑 public function onFilter() {

我在10月份有自己的插件CMS,它有一个
onFilter()
函数返回并显示带有数据的部分。当用户单击名称时,它会将他重定向到详细信息页面。当用户在浏览器中单击“后退”按钮时,我想显示他的最后一次搜索

我在
onFilter()
方法中尝试了类似于
Session::push('data',$data)
的方法,在
onInit()中尝试了
Session::get('data')
,但没有成功
$data
是一个酒吧列表

有人有同样的问题吗

编辑

public function onFilter()
{
    $result =
            Lounge::filterLounge($categories, $tags, $regions, $paidIds, $price_from, $search);

    Session::put('nameFilter', $result);

    return [
            '#list' => $this->renderPartial('loungelist::list.htm', [
                'list_data' => $result])
                ];
}
在partial.htm中

{% set list_data = __SELF__.getNameFilter() %}
{% for lounge in list_data %}
{{ lounge.name }}
{% endfor %}

正如@mwilson所提到的,我将在前端使用window.history和
pushstate()
函数,以便在更改每个过滤器时,在触发php之前推送包括查询字符串在内的状态,以获取过滤内容。我以前做过,效果很好。

你应该发布更多代码,让我们更有用。我假设您正在使用一个组件。你在使用ajax吗?会话将完成这项工作

在component.php put
onNameFilter()
事件中,您可以使用
session::put('nameFilter'$data)将数据推送到会话中。我建议对事件和键使用更具体的标签,因此我选择了“名称过滤器”

您需要使用component.php中的方法来调用会话

public function getNameFilter() {
    $nameFilter = Session::get('nameFilter');
    return $nameFilter;
}
现在,您可以在partial.htm中设置名称过滤器数据,并在会话中访问它:

 {% set nameFilterData = __SELF__.getNameFilter() %}
编辑以显示反映的代码

第一次我不明白它是怎么工作的。你的CMS页面看起来像什么?如何“第一次”显示过滤器

您的CMS页面有
{%component'内容“%}
对吗?然后在您的default.htm文件中有
{%partial\uuuuu SELF\uuuuuu~'::list%}

在局部视图中,您需要显示列表数据。这有什么显示吗

{% for list in list_data %}
    {{ list_data.name }}
{% endfor %}

不熟悉十月,但您是否尝试过通过JavaScript将它们保存到本地存储或其他地方?另一个简单的方法是使用queryparamscan,即使它重定向到另一个页面,我也会使用它吗?我是个乞丐,那可能是你被抓住的地方。如果你跳转域,那就不行了。域不行,只有单个域上的页面。那你应该没事了
localStorage
是一个很好的用例解决方案。是的,我试过像这样使用smth,但不起作用。当我保存到会话,然后重定向到另一个页面(另一个组件),然后返回到浏览器时,它不会加载任何内容。您不能说您尝试过类似的操作,并且没有在问题中提供任何代码。我给你的答案完美无瑕。您是否尝试过执行
dd($variable)
以查看您的代码是否实际工作
onInit()
无法处理分区。提供清晰的代码,以便我们可以帮助您。我在问题中添加了代码,它只在第一次起作用。所以,当我第一次搜索并试图显示这个会话时,它就工作了。当我刷新页面时,它不会。在你的部分htm中,这是你所有的吗
{%set list\u data=\uu SELF\uu.getNameFilter()%}
您不需要
{%for list in list\u data%}
?检查我的答案,我会更新它以反映您的代码。是的,我当然有,它只是一个例子。我尝试了Session::has('nameFilter'),它返回false。我想它只在一个函数中起作用。
{% for list in list_data %}
    {{ list_data.name }}
{% endfor %}