Метод addFlash
Метод addFlash класса AbstractController добавляет
в сессию flash-сообщение - короткое уведомление, которое
показывается пользователю один раз и автоматически удаляется
после отображения. Первым параметром передаётся тип сообщения
(например, 'success' или 'error'), вторым - текст
сообщения. Метод возвращает void.
Синтаксис
addFlash(string $type, mixed $message): void
Пример
Давайте добавим flash-сообщение об успешном действии:
<?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
{
$this->addFlash('success', 'Article saved');
return $this->render('article/index.html.twig');
}
}
?>
Теперь выведем сообщение в шаблоне Twig:
{% for message in app.flashes('success') %}
<p>{{ message }}</p>
{% endfor %}
Результат выполнения кода:
<p>Article saved</p>
Пример
Давайте добавим несколько flash-сообщений разных типов:
<?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
{
$this->addFlash('success', 'Article saved');
$this->addFlash('error', 'Article not found');
return $this->render('article/index.html.twig');
}
}
?>
Выведем оба типа сообщений в шаблоне Twig:
{% for message in app.flashes('success') %}
<p>{{ message }}</p>
{% endfor %}
{% for message in app.flashes('error') %}
<p>{{ message }}</p>
{% endfor %}
Результат выполнения кода:
<p>Article saved</p>
<p>Article not found</p>
Пример
Давайте выведем все flash-сообщения через метод getFlashes:
{% for type, messages in app.flashes %}
{% for message in messages %}
<p>{{ type }}: {{ message }}</p>
{% endfor %}
{% endfor %}
Результат выполнения кода:
<p>success: Article saved</p>
<p>error: Article not found</p>
Смотрите также
-
класс
AbstractController,
который является базовым для контроллеров -
метод
render,
который рендерит Twig-шаблон -
метод
redirectToRoute,
который выполняет редирект на маршрут -
метод
getParameter,
который возвращает параметр из конфигурации