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

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

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

Синтаксис

public function set(string $type, string|array $messages): void

Пример

Давайте установим flash-сообщение типа 'success':

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

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

flash set

Пример

Давайте передадим массив сообщений - все они будут сохранены под одним типом 'notice':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/list', name: 'article_list')] public function list(): Response { $flashBag = $this->container->get('request_stack') ->getSession() ->getFlashBag(); $flashBag->set('notice', ['article 1', 'article 2', 'article 3']); return new Response('flash array set'); } } ?>

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

flash array set

Пример

Давайте убедимся, что повторный вызов set затирает предыдущие сообщения того же типа:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/replace', name: 'article_replace')] public function replace(): Response { $flashBag = $this->container->get('request_stack') ->getSession() ->getFlashBag(); $flashBag->set('success', 'hello'); $flashBag->set('success', 'abcde'); $res = $flashBag->get('success'); return new Response(implode(', ', $res)); } } ?>

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

"abcde"

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

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