0

我正在使用CodeIgniter。我有一个全局类别列表,它分为几个组件,例如(内容文章、电子商务、用户、横幅等......)。有一个/categories/get_categories页面,我显示来自 Database Table 的所有行ci_categories

在该页面上,有一个带有可用(组件)的<select>框。每当我选择其中一个时,无论是Users还是E-commerce,它都会发送 POST 数据,它会过滤与组件的 id 对应的类别项目。所有这一切都很好。<options>ci_categories.com_id/categories/get_categories/$com_idcom_id

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

有什么建议吗?有没有办法在没有会话或 cookie 的情况下做到这一点?

4

2 回答 2

1

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

设置闪存数据

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

读取闪存数据

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

flashdata 设置为仅一次刷新,刷新后变量被删除

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

于 2013-05-20T12:20:31.367 回答
1

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

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

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

Flashdata 是一种选择,但它最终还是一个会话,但只存在一个请求。

于 2013-05-20T12:21:18.213 回答