Метод get класса FlashBag
Метод get класса FlashBag извлекает флеш-сообщения
по указанному ключу и сразу удаляет их из сессии. Первым
параметром передаётся ключ, вторым (необязательным) - значение
по умолчанию, которое возвращается, если сообщений по ключу нет.
Метод возвращает массив сообщений.
Синтаксис
public function get(string $type, array $default = []): array
Пример
Давайте добавим флеш-сообщение, а затем извлечём его методом 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->container->get('session')->getFlashBag();
$flashBag->add('notice', 'article created');
$res = $flashBag->get('notice');
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
article created
Пример
Давайте добавим несколько сообщений под одним ключом и извлечём их:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$flashBag = $this->container->get('session')->getFlashBag();
$flashBag->add('notice', 'article created');
$flashBag->add('notice', 'article published');
$flashBag->add('notice', 'article archived');
$res = $flashBag->get('notice');
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
article created, article published, article archived
Пример
Давайте проверим, что после извлечения сообщения удаляются, и повторный вызов вернёт пустой массив:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$flashBag = $this->container->get('session')->getFlashBag();
$flashBag->add('notice', 'hello');
$first = $flashBag->get('notice');
$second = $flashBag->get('notice');
return new Response(json_encode([$first, $second]));
}
}
?>
Результат выполнения кода:
[["hello"], []]
Пример
Давайте передадим значение по умолчанию для отсутствующего ключа:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$flashBag = $this->container->get('session')->getFlashBag();
$res = $flashBag->get('notice', ['abcde']);
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
abcde