Метод has класса FlashBag
Метод has класса FlashBag проверяет,
есть ли во flash-хранилище сообщения по указанному ключу.
Первым параметром передаётся имя ключа типа string.
Метод возвращает true, если сообщения есть,
и false в противном случае.
В отличие от метода get,
метод has не извлекает сообщения из хранилища.
Синтаксис
public function has(string $key): bool
Пример
Давайте добавим flash-сообщение и проверим его наличие по ключу 'notice':
<?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 saved');
$res = $flashBag->has('notice');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим наличие сообщений по ключу, которого нет во flash-хранилище:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/user', name: 'article_user')]
public function user(): Response
{
$flashBag = $this->getRequest()->getSession()->getFlashBag();
$flashBag->add('notice', 'user created');
$res = $flashBag->has('warning');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте используем метод has в шаблоне Twig
перед выводом flash-сообщений:
{% if app.flashes.has('notice') %}
<div class="notice">
{% for message in app.flashes('notice') %}
<p>{{ message }}</p>
{% endfor %}
</div>
{% endif %}
Результат выполнения кода для добавленного сообщения 'article saved':
<div class="notice">
<p>article saved</p>
</div>