Я все еще новичок, когда речь заходит об использовании 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; }
Моя функция удаления не работает вообще, независимо от того, что я пытаюсь сделать с ней. Причина, по которой я переношу массив сеанса в массив temp, заключалась в том, чтобы попытаться обойти «Если глобальная переменная отключена () внутри функции, уничтожается только локальная переменная. Переменная в вызывающей среде будет сохранять то же значение, что и до 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; }
с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; }
Любые советы или стремление к правильному направлению будут оценены.
Я лично никогда не использовал 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
с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