【问题标题】:Yii - Manipulating a sesssion variableYii - 操作会话变量
【发布时间】:2013-09-02 08:55:03
【问题描述】:

在使用 YII 方面我还是个新手,但过去几天我一直在使用会话变量,我似乎无法理解错误背后的概念。任何建议将不胜感激。

到目前为止,我的 add 函数运行良好,目前我的目的是跟踪添加到我的会话变量营养中的最后 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(),则只有局部变量被破坏。调用环境中的变量将保留与调用 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;
    }

我们将不胜感激任何建议或朝着正确方向前进。

【问题讨论】:

  • unset($nutritionArray[$pageId]); 之后尝试unset(Yii::app()->session['nutrition']);,也可以尝试print_r($nutritionArray); 以确保其中的数据正确。
  • 这也可能是问题的一部分:code.google.com/p/yii/issues/detail?id=1681

标签: php arrays session yii unset


【解决方案1】:

我个人从来没有使用过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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多