我正在尝试完成每次用户访问某个页面时为会话变量(即数组)添加值的函数。这是我的控制器代码:
public function actionPut($id)
{
$session=new CHttpSession;
$session->open();
if (empty($session['the_variable'])) {
$session['the_variable'] = array($id);
}
else {
$session['the_variable'][] = $id;
}
$session->close();
$this->render('test', array('session'=>$session));
}
但它不起作用。如果变量为空,则它仅存储第一次的信息。下次我访问该页面时,它不会为数组增加值。
我也尝试了push_array
功能,但没有运气。
有什么问题?
答案 0 :(得分:6)
尝试此解决方案。
public function actionPut($id)
{
$session = Yii::app()->session;
if (!isset($session['the_variable']) || count($session['the_variable'])==0)
{
$session['the_variable'] = array($id);
}
else {
$myarr = $session['the_variable'];
$myarr[] = $id;
$session['the_variable'] = $myarr;
}
$this->render('test', array('session'=>$session));
}
答案 1 :(得分:0)
我认为您的问题是您自己开始/关闭会话。相反,你应该让Yii为你处理:
public function actionPut($id)
{
$session=Yii::app()->session;
if (empty($session['the_variable'])) {
$session['the_variable'] = array($id);
}
else {
$session['the_variable'][] = $id;
}
$this->render('test', array('session'=>$session));
}
另外,不要自己关闭会话,但让Yii处理它。