我正在使用 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?
答案 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是一个选项,但无论如何它最终都是一个会话,但只有一个请求。