Здравствуйте, я хочу создать флэш-сообщение в сеансе, когда я создаю (добавляю сообщение), публикую или обновляю (обновляю сообщение) или удаляю (сообщение удаляется) после перенаправления. Мне удалось отобразить сообщение, но когда я обновляю ту же страницу, сообщение снова появляется, и я хочу удалить это сообщение. Я пытаюсь сбросить($_session[$value]), но ничего. в моем контроллере:
$phpsession = new PHPSession();
$flashmessage = $phpsession->get('succes', 'comment added');
header('location: /blog/comment/'.$postid);
exit;
PHPSession - это сеанс моего класса:
class PHPSession
{ защищенная $flash = [];
public function __construct(){
$this->ensureStarted();
}
private function ensureStarted() {
if (session_status() === PHP_SESSION_NONE){
session_start();
}
}
public function get(string $key, $value, $default = null)
{
$_SESSION[$key] = $value;
return isset($_SESSION[$key]) ? $_SESSION[$key] : $default;
}
public function getFlashMessage(string $key, $value, $default = null) {
if (!isset($this->flash[$key])) {
$message = $this->get($key, $value, $default);
unset($_SESSION[$key]);
$this->flash[$key] = $message;
}
return $this->flash[$key];
}
}
и в моем представлении ветки:
{% if flash.getFlashMessage('succes', 'comment added') %}
<div class="alert alert-success mt-4" role="alert">
<p>ok</p>
</div>
{% endif %}
на мой взгляд, flash = новое изменение PHPSession() в addGlobal в классе twig
$this->twig->addGlobal('flash', new PHPSession());
но я не знаю, где я могу отключить сеанс для удаления сеанса после флэш-сообщения. Если кто-то может мне помочь, я был бы благодарен ему. Спасибо
$_SESSION[$key] = $value;
. Насколько я знаю, Twig получает копию $_SESSION, также $_session не совпадает с $_SESSION. У вас нигде нет переменной $_session. В вопросе вы пишете:unset($_session[$value])
- почему $value, разве это не должно быть $key? Что бы я сделал, это создать класс Session с методами set/get/getAndRemove, передать объект этого класса в свою ветку и просто вызватьsession.getAndRemove('success')
- person blahy   schedule 04.09.2020