Возникли проблемы при сбросе переменной сеанса в Yii2
Я использую Yii2
и я только начал работать с sessions
внутри. Я прочитал документацию для них на сайте Yii.
Одна вещь, которую я заметил, это то, что немного сложно работать с многомерными массивами в сессиях без использования стандартного суперглобального $_SESSION
и, следовательно, я в основном использовал это.
Однако у меня возникают проблемы с удалением переменной сеанса.
Пример:
if (!Yii::$app->session->isActive) {
Yii::$app->session->open();
}
print_r($_SESSION['foo']);
if ($this->command == 'sample_action') {
if (!isset($_SESSION['foo'][$this->some_id][$this->example_id])) {
$_SESSION['foo'][$this->some_id][$this->example_id] = $this->example_id;
$result = true;
}
} elseif ($this->command == 'sample_action_2') {
if (isset($_SESSION['foo'][$this->some_id][$this->example_id])) {
unset($_SESSION['foo'][$this->some_id][$this->example_id]);
//$_SESSION['foo'][$this->some_id][$this->example_id] = ''; // This works
$result = true;
}
}
print_r($_SESSION['foo']);
С помощью unset
на это не работает вообще, это все еще остается. Установка его в пустое значение работает однако.
2 ответа
Решение
Наконец-то есть рабочее решение, надеюсь, это поможет кому-то еще:
$session = Yii::$app->session;
$foo = $session['foo'];
if ($this->command == 'sample_action') {
$foo[$this->some_id][$this->example_id] = $this->example_id;
} elseif ($this->command == 'sample_action_2') {
unset($foo[$this->some_id][$this->example_id]);
}
$session['foo'] = $foo;
Попробуй это..
$session = Yii::$app->session;
$session->remove('foo');
Может помочь вам..