Возникли проблемы при сбросе переменной сеанса в 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');

Может помочь вам..

Другие вопросы по тегам