저는 YII 사용에 관해서는 아직 초보자입니다. 그러나 지난 며칠 동안 세션 변수로 작업 중이었고, 제 오류에 대한 개념을 이해하지 못하는 것 같습니다. 모든 조언을 주시면 감사하겠습니다.Yii - sesssion 변수 조작
내 추가 변수는 세션 변수 nutrition에 추가 된 마지막 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;
}
올바른 방향으로 향한 조언이나 의견을 보내 주시면 감사하겠습니다. 위의와 다차원 배열에 문제가있을 것 같습니다 내가 주석에 넣어으로
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
:
'unset ($ nutritionArray [$ pageId]);'을 실행 한 후에'unset (Yii :: app() -> session [ 'nutrition']);을 시도해보고 print_r ($ nutritionArray);'올바른 데이터가 있는지 확인하십시오. – Pitchinnate
또한 문제의 일부일 수 있습니다. https://code.google.com/p/yii/issues/detail?id=1681 – Pitchinnate