webentwicklung-frage-antwort-db.com.de

Symfony - Flash einstellen und TWIG einchecken

Ich versuche, Flash in meinem Controller einzustellen, und überprüfe TWIG, ob ein Flash eingestellt wurde. Mein Problem ist, dass TWIG immer meldet, dass mein Flash nicht eingestellt wurde, und ich bin mir nicht sicher, warum.

Regler:

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

ZWEIG:

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

In Controller 

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

or 

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

In Zweig 

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

    {{ flashMessage }}

{% endfor %}

Zu Ihrer Information: Doc

52
Venu

Im Controller: 

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

Im Hinblick auf :

{% 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

Es ist erwähnenswert, dass wir ab Symfony 3.3 die vereinfachte Version app.flashes() verwenden können. Beispiel:

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

Quelle

7
Albert221

es ist in Symfony 4 vereinfacht (sollte auch in 3.4 funktionieren)

Ihr Controller:

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(...);
}

Zweig:

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

Verwenden Sie FlashAlertBundle , um die Handhabung (Hinzufügen/Anzeigen) von Symfony-Flash-Nachrichten vereinfachen zu können. 

Verfügbar durch
https://github.com/rasanga/FlashAlertBundle
https://packagist.org/packages/ras/flash-alert-bundle

Sie brauchen nur eine einzige Leitung 

{{ render_flash_alerts() }}

flash-Nachrichten zu rendern

0
Dead-Man