如何在页面刷新后保持selectbox过滤结果

时间:2013-05-20 12:14:50

标签: php codeigniter-2 session-cookies

我正在使用 CodeIgniter 。我有一个全球类别列表,它分为几个组件,如(Conten文章,电子商务,用户,横幅等...)。在/categories/get_categories页面中,我显示了数据库表ci_categories中的所有行。

在该页面上,有一个<select>框,其中<options>可用ci_categories.com_id(组件)。每当我选择其中一个用户电子商务时,它将发送POST数据/categories/get_categories/$com_id,它将过滤与组件ID相对应的类别项com_id。所有这些都很有效。

但我想要的是保持选择此过滤器并且不返回默认选择(所有组件)。例如,我单击“类别” - 它将输出<table>中的所有类别行。我从下拉列表选择框列表中选择一个选项,它将过滤特定的行输出,然后单击添加新类别,它应该将选定的组件选项传递到下一页。在下一个FORM页面上,我在其中添加了一个新的项目信息,我点击SAVE,它应该返回上一页,其中列出了所有类别,但选择了该过滤器com_id

有什么建议吗?有没有办法没有会话或cookie?

2 个答案:

答案 0 :(得分:1)

您可以像这样使用会话flashdata:

设置flashdata

$this->session->set_flashdata('search','your_search');

阅读flashdata

$this->session->flashdata('search');

在刷新变量后,flashdata仅设置一次刷新

http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

答案 1 :(得分:1)

我的建议是利用会话,因为它们特别适用于根据当前用户体验在请求之间存储数据。大多数人只在一个浏览器窗口中搜索网站,所以它不应该给出真正的问题。即使还有其他选项,您始终需要通过特定代码识别用户,该代码将存储在会话/ cookie中。

我能想到的唯一选择是随后更改每个链接以包含base64编码字符串中存储的信息。但这会破坏你的链接结构,并需要在每个页面上显示正确的链接,以显示搜索引擎的正确URL。

我建议你坚持使用Sessions,因为它们在CodeIgniter中处理得很好。如果需要,您甚至可以将它们存储在数据库中,方法是在主配置文件中设置它。

Flashdata是一个选项,但无论如何它最终都是一个会话,但只有一个请求。

相关问题