РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
278 of 1361 menu

Метод add класса FlashBag

Метод add класса FlashBag добавляет временное сообщение в сессию. Такие сообщения называются flash-сообщениями: они доступны только в следующем запросе, после чего автоматически удаляются. Первым параметром передаётся тип сообщения, например 'success' или 'error'. Вторым параметром передаётся текст сообщения.

Тип сообщения используется как ключ, по которому позже можно получить все сообщения этого типа. Одно и то же сообщение можно добавить несколько раз, тогда метод вернёт массив всех добавленных значений.

Синтаксис

$flashBag->add(string $type, mixed $message): void

Пример

Давайте добавим flash-сообщение в сессию через контроллер:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $session = $request->getSession(); $flashBag = $session->getFlashBag(); $flashBag->add('success', 'article saved'); return new Response('ok'); } } ?>

Результат выполнения кода:

ok

После выполнения запроса сообщение 'article saved' будет доступно в следующем запросе под ключом 'success'.

Пример

Давайте добавим несколько сообщений одного типа:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $session = $request->getSession(); $flashBag = $session->getFlashBag(); $flashBag->add('success', 'article 1'); $flashBag->add('success', 'article 2'); $flashBag->add('success', 'article 3'); return new Response('ok'); } } ?>

Результат выполнения кода:

ok

В следующем запросе метод get вернёт массив из трёх сообщений:

["article 1", "article 2", "article 3"]

Пример

Давайте добавим сообщения разных типов:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $session = $request->getSession(); $flashBag = $session->getFlashBag(); $flashBag->add('success', 'article saved'); $flashBag->add('error', 'user not found'); return new Response('ok'); } } ?>

Результат выполнения кода:

ok

Теперь в следующем запросе можно получить сообщения по каждому типу отдельно:

$flashBag->get('success'); // ['article saved'] $flashBag->get('error'); // ['user not found']

Смотрите также

  • класс FlashBag,
    который хранит flash-сообщения сессии
  • метод get,
    который возвращает сообщения по типу
  • метод all,
    который возвращает все flash-сообщения
  • метод getFlashBag,
    который возвращает объект FlashBag из сессии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить