我在10月的CMS中拥有自己的插件,该插件具有onFilter()
函数,可以返回内容并显示带有数据的部分内容。用户单击名称时,会将其重定向到详细信息页面。当用户在浏览器中单击“后退”按钮时,我想显示他的上一次搜索。
我在Session::push('data', $data)
方法中尝试了onFilter()
,在Session::get('data')
中尝试了onInit()
,但没有成功。 $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])
];
}
public function getNameFilter() {
$nameFilter = Session::get('nameFilter');
return $nameFilter;
}
使用部分.htm
{% set list_data = __SELF__.getNameFilter() %}
{% for lounge in list_data %}
{{ lounge.name }}
{% endfor %}
答案 0 :(得分:0)
就像@mwilson提到的那样,我将在pushstate()
函数的前端使用window.history,以便在更改每个过滤器时,在触发到php之前先推送包括查询字符串在内的状态,以获取过滤后的内容。我以前做过,而且效果很好。
答案 1 :(得分:0)
您应该发布更多代码,以对我们有所帮助。我假设您正在使用组件。您正在使用ajax吗?会话将完成这项工作。
在您的component.php中放置onNameFilter()
事件,您可以使用Session::put('nameFilter' $data);
将数据推送到会话中。我建议为事件和键使用更具体的标签,所以我选择了“ nameFilter”。
您将要在component.php中使用一种方法来调用会话。
public function getNameFilter() {
$nameFilter = Session::get('nameFilter');
return $nameFilter;
}
现在,在partial.htm中,您可以设置名称过滤器数据并访问它,只要它在会话中就可以:
{% set nameFilterData = __SELF__.getNameFilter() %}
编辑以显示相关代码
我不知道第一次如何运作。您的CMS页面是什么样的?您如何“第一次”显示过滤器?
您的CMS页面具有{% component 'something' %}
对吗?然后在您的default.htm文件中,您有{% partial __SELF__~'::list %}
吗?
在您的部分中,您将需要显示list_data。这显示什么吗?
{% for list in list_data %}
{{ list_data.name }}
{% endfor %}