Метод peekAll класса FlashBag
Метод peekAll класса FlashBag возвращает массив всех
флеш-сообщений, которые currently находятся в сессии. В отличие от
метода all, который извлекает сообщения и очищает хранилище,
peekAll только читает данные. Параметров метод не принимает.
Это удобно, когда нужно показать сообщения, но оставить их для
следующего запроса.
Синтаксис
public function peekAll(): array
Пример
Давайте добавим несколько флеш-сообщений и прочитаем их
с помощью метода peekAll:
<?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->get('session')->getFlashBag();
$flashBag->add('success', 'article 1');
$flashBag->add('notice', 'article 2');
$flashBag->add('success', 'article 3');
$res = $flashBag->peekAll();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"success":["article 1","article 3"],"notice":["article 2"]}
Пример
Давайте убедимся, что после вызова peekAll сообщения
остаются в сессии. Для этого вызовем метод повторно:
<?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->get('session')->getFlashBag();
$flashBag->add('success', 'hello');
$first = $flashBag->peekAll();
$second = $flashBag->peekAll();
return new Response(json_encode([
'first' => $first,
'second' => $second,
]));
}
}
?>
Результат выполнения кода:
{"first":{"success":["hello"]},"second":{"success":["hello"]}}