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

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

Метод keys класса FlashBag возвращает список ключей flash-уведомлений, которые на данный момент хранятся в сессии и ещё не были получены. Метод не принимает параметров и возвращает индексированный массив строк. Ключи соответствуют типам уведомлений, например 'success', 'error' или 'warning'.

Метод полезен, когда нужно узнать, какие типы уведомлений присутствуют в сессии, не извлекая и не удаляя их. В отличие от метода all, вызов keys не очищает flash-пакет, поэтому уведомления остаются доступными для последующего чтения.

Синтаксис

public function keys(): array

Пример

Давайте получим flash-пакет из сессии и выведем ключи хранящихся в нём уведомлений:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(Request $request): Response { $session = $request->getSession(); $flashBag = $session->getFlashBag(); $flashBag->add('success', 'article 1'); $flashBag->add('error', 'article 2'); $flashBag->add('warning', 'article 3'); $res = $flashBag->keys(); return new Response(json_encode($res)); } } ?>

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

["success", "error", "warning"]

Пример

Давайте проверим, что метод keys не удаляет уведомления и их можно прочитать после вызова:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(Request $request): Response { $session = $request->getSession(); $flashBag = $session->getFlashBag(); $flashBag->add('success', 'hello'); $res = $flashBag->keys(); $messages = $flashBag->get('success'); return new Response(json_encode([ 'keys' => $res, 'messages' => $messages, ])); } } ?>

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

{"keys":["success"],"messages":["hello"]}

Пример

Давайте используем метод keys для перебора всех типов уведомлений и вывода их через Twig:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function index(Request $request): Response { $session = $request->getSession(); $flashBag = $session->getFlashBag(); $flashBag->add('success', 'article 1'); $flashBag->add('error', 'article 2'); return $this->render('article/index.html.twig', [ 'keys' => $flashBag->keys(), 'flashBag' => $flashBag, ]); } } ?>

Теперь выведем уведомления в шаблоне:

{% for key in keys %} <p>{{ key }}: {{ flashBag.get(key)|join(', ') }}</p> {% endfor %}

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

<p>success: article 1</p> <p>error: article 2</p>

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

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