web-dev-qa-db-fra.com

Symfony - Configuration de Flash et enregistrement dans TWIG

J'essaie de définir Flash dans mon contrôleur, puis vérifiez dans TWIG si un Flash a été défini. Mon problème est que TWIG rapporte toujours que mon flash n’a pas été réglé et je ne sais pas pourquoi.

Manette:

$session->getFlashBag()->add('error', 'Does Not Exist');

BRINDILLE:

{{ dump( app.session.hasFlash('error') ) }} //outputs false
{{ dump( app.session.getFlashBag().get('error') ) }} //outputs false
14
Jon

Dans le contrôleur 

$this->get('session')->getFlashBag()->set('error', 'Does Not Exist');

or 

$this->get('session')->getFlashBag()->add('error', 'Does Not Exist');

En brindille 

{% for flashMessage in app.session.flashbag.get('error') %}

    {{ flashMessage }}

{% endfor %}

FYI: Doc

52
Venu

En contrôleur: 

$this->get('session')->getFlashBag()->add('error', "User does not exists.");

En vue :

{% for type, messages in app.session.flashbag.all() %}
    {% for message in messages %}
        {% if type == 'error' %}
            {{ message }}
        {% endif %}
        {# Or even with css class rendering:
            <div class="flash-{{type}}">{{message}}</div>
        #}
    {% endfor %}
{% endfor %}
15
Kishan Patel

Il est à noter que dans Symfony version 3.3 et ultérieure, nous pouvons utiliser la version simplifiée app.flashes(). Exemple:

{% for message in app.flashes('notice') %}
    <div class="flash-notice">
        {{ message }}
    </div>
{% endfor %}

La source

7
Albert221

c est simplifié dans symfony 4 (cela devrait aussi fonctionner en 3.4)

Votre contrôleur:

if ($form->isSubmitted() && $form->isValid()) {
    // do some sort of processing

    $this->addFlash(
        'notice',
        'Your changes were saved!'
    );
    // $this->addFlash() is equivalent to $request->getSession()->getFlashBag()->add()

    return $this->redirectToRoute(...);
}

Rameau:

{% for message in app.flashes('notice') %}
    <div class="flash-notice">
        {{ message }}
    </div>
{% endfor %}
2
Guillaume Harari

Utilisez FlashAlertBundle , il fournit un moyen simplifié de gérer (ajouter/afficher) des messages flash Symfony

Disponible via
https://github.com/rasanga/FlashAlertBundle
https://packagist.org/packages/ras/flash-alert-bundle

Vous avez juste besoin d'une seule ligne 

{{ render_flash_alerts() }}

rendre des messages flash

0
Dead-Man