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

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

Метод peek класса FlashBag возвращает массив flash-сообщений указанного типа, но в отличие от метода get не удаляет их из сессии. Первым параметром передаётся тип сообщения в виде строки. Если сообщений указанного типа нет, метод вернёт пустой массив.

Метод удобно использовать, когда нужно показать flash-сообщения, не «съедая» их - например, при отладке или при отображении уведомлений сразу в нескольких местах страницы.

Синтаксис

public function peek(string $type): array

Пример

Давайте добавим два flash-сообщения типа 'notice' и посмотрим на них через метод peek:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $flashBag = $this->getRequest()->getSession()->getFlashBag(); $flashBag->add('notice', 'article 1'); $flashBag->add('notice', 'article 2'); $res = $flashBag->peek('notice'); return new Response(json_encode($res)); } } ?>

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

["article 1", "article 2"]

Пример

Давайте убедимся, что после вызова peek сообщения остаются в сессии. Сначала вызовем peek, затем get:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $flashBag = $this->getRequest()->getSession()->getFlashBag(); $flashBag->add('notice', 'hello'); $peekRes = $flashBag->peek('notice'); $getRes = $flashBag->get('notice'); return new Response(json_encode([ 'peek' => $peekRes, 'get' => $getRes, ])); } } ?>

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

{"peek":["hello"],"get":["hello"]}

Пример

Давайте попробуем посмотреть flash-сообщения несуществующего типа 'warning':

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { $flashBag = $this->getRequest()->getSession()->getFlashBag(); $flashBag->add('notice', 'abcde'); $res = $flashBag->peek('warning'); return new Response(json_encode($res)); } } ?>

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

[]

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

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