Flash-Messages in Symfony2 doesn't seem to work in my twig-template
Solution 1
do you use symfony 2.0 or 2.1 (currently master branch)?
for symfony 2.1 the documentation is located here: http://symfony.com/doc/2.1/book/controller.html#flash-messages
flash messages are shown like this:
{% for flashMessage in app.session.flashbag.get('notice') %}
<div class="flash-notice">
{{ flashMessage }}
</div>
{% endfor %}
Solution 2
Mmm check in your config file that you have auto-started the session:
session:
default_locale: %locale%
auto_start: true
Because the error seems to be that Twig doesn't find the session class, not something about the hasFlash function. In fact I have almost exactly the same code in my layout.
Solution 3
This is pretty old at time of writing so imagine you've worked it out by now, but for reference sake, it's has
rather than hasFlash
. So..
{% if app.session.flashbag.has('notice') %}
<div id="flashmessage" class="flash-notice">
{{ app.session.flashbag.get('notice') }}
</div>
{% endif %}
Solution 4
By symfony 2.6 +
{% if app.session.flashbag.has('notice') %}
{{ app.session.flashbag.get('notice').0 }}<br/>
{% endif %}
Because flashbag is by this version array you need foreach it or use index. I m using index because i dont need something more.
Solution 5
In controller
$this->get('session')->getFlashBag()->add('notice', 'Your message!');
In your Twig file
{% for flashMessage in app.session.flashbag.get('notice') %}
<div class="alert alert-warning">{{ flashMessage }}</div>
{% endfor %}
stijink
Updated on September 06, 2020Comments
-
stijink over 3 years
I want to add support for flash messages on our pages. I implemented this by following the documentation found here.
I added the following snipplet to my base layout. (i also tried to add it to a specific action template).
{% if app.session.hasFlash('notice') %} <div id="flashmessage" class="flash-notice"> {{ app.session.flash('notice') }} </div> {% endif %}
After adding the following error is thrown
Twig_Error_Runtime: Item "hasFlash" for "" does not exist in "MyBundle::layout.html.twig" at line 66
Is there anything else i need to do ?
-
JamesHalsall over 12 yearsif you read the question properly,
app.session
does not exist in the twig template, its nothing to do with setting it -
Creasixtine almost 9 yearsI agree with that. It seems
app.session
is null inside the Twig template. -
Interlated almost 9 yearsDoesn't work (2.6) because flashbag.get returns an array. See Manual.