在使用YII时,我仍然是一个新手,但过去几天我一直在使用会话变量,而我似乎无法理解我的错误背后的概念。任何建议将不胜感激。
到目前为止,我的添加功能完美无缺,因为我目前的目的是跟踪添加到会话变量营养的最后3个变量。
public function addSessionFavourite($pageId)
{
$page = Page::model()->findByPk($pageId);
$categoryName = $page->getCategoryNames();
if($categoryName[0] == 'Nutrition')
{
if(!isset(Yii::app()->session['nutrition']))
{
Yii::app()->session['nutrition'] = array();
}
$nutrition = Yii::app()->session['nutrition'];
array_unshift($nutrition, $pageId);
array_splice($nutrition, 3);
Yii::app()->session['nutrition'] = $nutrition;
}
我的删除功能似乎根本不起作用,无论我尝试用它做什么。我将会话数组转移到临时数组的原因是试图绕过“如果一个全局化变量未设置()在函数内部,只破坏局部变量。调用环境中的变量将保留调用unset()之前的值相同。“但这完全失败了。
public function removeSessionFavourite($pageId)
{
$page = Page::model()->findByPk($pageId);
$categoryName = $page->getCategoryNames();
if($categoryName[0] == 'Nutrition')
{
if(!isset(Yii::app()->session['nutrition']))
{
return true;
}
$nutritionArray = Yii::app()->session['nutrition'];
unset($nutritionArray[$pageId]);
Yii::app()->session['nutrition'] = $nutritionArray;
}
任何建议或向正确的方向努力都将受到赞赏。
答案 0 :(得分:2)
我个人从未使用Yii::app()->session
我通常使用Yii用户,我从来没有遇到任何问题:
Yii::app()->user->setState('test', array('a'=>1,'b'=>2));
print_r(Yii::app()->user->getState('test')); //see whole array
$test = Yii::app()->user->getState('test');
unset($test['b']);
Yii::app()->user->setState('test',$test);
print_r(Yii::app()->user->getState('test')); //only 'a'=>1 remains
Yii::app()->user->setState('test', null);
print_r(Yii::app()->user->getState('test')); //now a null value
正如我在上面的评论中所述,多维数组似乎存在会话变量的问题:https://code.google.com/p/yii/issues/detail?id=1681