Yii - Manipulowanie zmienną sesssion
Nadal jestem nowicjuszem, jeśli chodzi o używanie YII, ale pracowałem ze zmiennymi sesji przez ostatnie kilka dni i nie wydaje mi się, żebym mógł zrozumieć koncepcję mojego błędu. Wszelkie porady będą mile widziane.
Moja funkcja dodawania działa do tej pory doskonale, ponieważ moim celem jest śledzenie ostatnich 3 zmiennych dodanych do mojego zmiennego żywienia sesji.
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;
}
Moja funkcja usuwania nie działa w ogóle, niezależnie od tego, co próbuję z nią zrobić. Powodem, dla którego przesyłam tablicę sesji do tablicy tymczasowej, było próba obejścia „Jeśli zmienna globalna jest unset () wewnątrz funkcji, niszczona jest tylko zmienna lokalna. Zmienna w środowisku wywołującym zachowa ta sama wartość co przed wywołaniem unset (). " Ale to była całkowita porażka.
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;
}
Każda rada lub dążenie do właściwego kierunku zostanie doceniona.