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 layou
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.
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 %}
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 %}
I just figure out that flash messages are not working if intercept_redirects
is true in debug mode.
Did you set the flash message somewhere in your action?
$this->get('session')->setFlash('notice', 'Your changes were saved!');
Remember that flash messages will be stored on the user's session for exactly one additional request.
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.