我想为Yii中的guest用户设置一个会话数组变量。我希望当用户运行应用程序时,应该在会话中为他创建一个数组。稍后,当用户将项目添加到购物车时,我需要该会话数组将值推送到它。问题是我无法弄清楚我在哪里设置会话变量?
我知道如果用户正在登录,那么我可以使用身份验证功能在用户身份中设置:
$this->setState('cart',array());
或
Yii::app()->user->setState('cart',array());
但是当用户登录并调用身份验证功能时,该功能正常。在我的情况下,用户将不会登录并将转到产品购买页面,其中该会话数组应该可用。
有什么想法吗? 如果需要进一步的信息,请评论。
答案 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/