如何在CodeIgniter控制器执行完毕后设置会话flashdata?

时间:2014-09-05 18:26:31

标签: php codeigniter

我希望我的CI控制器在每次执行完毕后为下一页加载保存flashdata。以下是我尝试过的内容:

使用post_controller挂钩:

最初我尝试使用post_controller挂钩,但如果调用redirect()立即将用户发送到下一页,则不会被触发。

使用控制器destruct()方法:

然后我尝试使用控制器的destruct()方法调用会话set_flashdata()方法,但这不起作用,因为它看起来好像数据库连接已经由于该驱动程序类的is_object($this->conn_id)方法中的escape_str()测试失败,因此报废了。

如何确保在完成控制器操作后始终执行对set_flashdata()的调用?

1 个答案:

答案 0 :(得分:1)

我不知道我的回答多少适合你的问题。

如果使用post_controller挂钩,则在重定向时不起作用。 即使destruct()也不适用于相同的情况。

使用constructordestructor成像c ++程序,中间有一个退出。当流程中断时,destructor将不会被调用。

所以要摆脱这个,你有以下选择

  1. 您需要找出退出点并手动调用set_flashdata()
  2. 您可以创建pre_controller挂钩并致电set_flashdata()。根据网址获取元素,您可以设置set_flashdata()。这意味着您需要在网址额外
  3. 中传递内容