在 Yii2 中取消设置会话变量时遇到问题
Having trouble unsetting session variable in Yii2
我正在使用 Yii2
,我刚刚开始使用其中的 sessions
。我已经在 Yii 网站上阅读了他们的 documentation。
我注意到的一件事是,在不使用标准超全局的情况下,在会话中处理多维数组有点困难 $_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
根本不起作用,它仍然存在。但是,将其设置为空白值是可行的。
试试这个..
$session = Yii::$app->session;
$session->remove('foo');
可以帮到你..
终于找到了一个可行的解决方案,希望这对其他人有帮助:
$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;
我正在使用 Yii2
,我刚刚开始使用其中的 sessions
。我已经在 Yii 网站上阅读了他们的 documentation。
我注意到的一件事是,在不使用标准超全局的情况下,在会话中处理多维数组有点困难 $_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
根本不起作用,它仍然存在。但是,将其设置为空白值是可行的。
试试这个..
$session = Yii::$app->session;
$session->remove('foo');
可以帮到你..
终于找到了一个可行的解决方案,希望这对其他人有帮助:
$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;