yii — Flash-сообщения с сессиями в переполнении стека

Я работаю над проектом на PHP, который не использует какие-либо рамки для PHP. Я родом из Yii, и я использовал:

Yii::app()->user->setFlash('flash_name', 'Flash value');

И проверил это с помощью:

Yii::app()->user->hasFlash('flash_name');

Чтобы проверить, присутствует ли он и существует ли он, и получить его значение, я использовал:

Yii::app()->user->getFlash('flash_name', 'Default Flash value');

Пока я написал эти функции set, check а также get вспышка:

function set_flash($flash_name, $value) {
$_SESSION['flashes'][$flash_name] = $value;
}

function has_flash($flash_name) {
return isset($_SESSION['flashes'][$flash_name]) ? true : false;
}

function get_flash($flash_name, $default_value = null) {
if(has_flash($flash_name)) {
return $_SESSION['flashes'][$flash_name];
}

return $default_value;
}

Тем не менее, когда я использую его в моем post.php как это:

set_flash('success', true);

И проверить это в моем index.php как это:

<div class="container">
<?php if(has_flash('success') && (get_flash('success') === true)): ?>
<div class="alert alert-success">
<h4>Success!</h4>
<hr />
<p>You have successfully posted new content on your website. Now you can edit or delete this post.</p>
</div>
<?php endif; ?>
</div>

всякий раз, когда я обновляю страницу, там все равно появляется сообщение.

Как удалить вспышку после ее использования или активации?

2

Решение

Добавить новую строку в get_flash:

function get_flash($flash_name, $default_value = null) {
if(has_flash($flash_name)) {
$retVal = $_SESSION['flashes'][$flash_name];
// don't unset before you get the vaue
unset($_SESSION['flashes'][$flash_name]);
return $retVal;
}

return $default_value;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]