如何仅在Yii中为访客用户设置会话变量?

时间:2014-06-11 10:36:18

标签: php session yii

我想为Yii中的guest用户设置一个会话数组变量。我希望当用户运行应用程序时,应该在会话中为他创建一个数组。稍后,当用户将项目添加到购物车时,我需要该会话数组将值推送到它。问题是我无法弄清楚我在哪里设置会话变量?

我知道如果用户正在登录,那么我可以使用身份验证功能在用户身份中设置:

$this->setState('cart',array()); 

Yii::app()->user->setState('cart',array());

但是当用户登录并调用身份验证功能时,该功能正常。在我的情况下,用户将不会登录并将转到产品购买页面,其中该会话数组应该可用。

有什么想法吗? 如果需要进一步的信息,请评论。

2 个答案:

答案 0 :(得分:0)

为什么不直接使用会话?您不必为Yii :: app() - >用户使用setState来保留购物车。做一个

Yii::app()->session['cart'] = array();

如果用户登录无关紧要,他仍然有会话。然后只需更新Yii :: app() - > session ['cart']。

无论如何,这就是我所做的。

答案 1 :(得分:0)

如果使用

Yii::app()->session['cart'] = array(); 

错误“间接修改CDbHttpSession的重载元素无效”

http://www.yiiframework.com/forum/index.php/topic/4262-multi-dimensional-arrays-in-session/