diff --git a/extensions/debug/CHANGELOG.md b/extensions/debug/CHANGELOG.md index 3c8f5cf36f..d2efb4e960 100644 --- a/extensions/debug/CHANGELOG.md +++ b/extensions/debug/CHANGELOG.md @@ -5,6 +5,7 @@ Yii Framework 2 debug extension Change Log -------------------------- - Bug #1263: Fixed the issue that Gii and Debug modules might be affected by incompatible asset manager configuration (qiangxue) +- Bug #3956: Debug toolbar was affecting flash message removal (samdark) - Enh #2299: Date and time in request list is now never wrapped (samdark) - Enh #3088: The debug module will manage their own URL rules now (qiangxue) - Enh #3103: debugger panel is now not displayed when printing a page (githubjeka) diff --git a/extensions/debug/panels/RequestPanel.php b/extensions/debug/panels/RequestPanel.php index 501e8f067f..0e542f4b3a 100644 --- a/extensions/debug/panels/RequestPanel.php +++ b/extensions/debug/panels/RequestPanel.php @@ -85,11 +85,9 @@ class RequestPanel extends Panel } else { $action = null; } - /** @var \yii\web\Session $session */ - $session = Yii::$app->has('session', true) ? Yii::$app->get('session') : null; return [ - 'flashes' => $session ? $session->getAllFlashes() : [], + 'flashes' => $this->getFlashes(), 'statusCode' => Yii::$app->getResponse()->getStatusCode(), 'requestHeaders' => $requestHeaders, 'responseHeaders' => $responseHeaders, @@ -109,4 +107,27 @@ class RequestPanel extends Panel 'SESSION' => empty($_SESSION) ? [] : $_SESSION, ]; } + + /** + * Getting flash messages without deleting them or touching deletion counters + * + * @return array flash messages (key => message). + */ + protected function getFlashes() + { + /** @var \yii\web\Session $session */ + $session = Yii::$app->has('session', true) ? Yii::$app->get('session') : null; + if ($session === null) { + return []; + } + + $counters = $session->get($session->flashParam, []); + $flashes = []; + foreach (array_keys($counters) as $key) { + if (array_key_exists($key, $_SESSION)) { + $flashes[$key] = $_SESSION[$key]; + } + } + return $flashes; + } }