symfony 3.4中的Flash消息

时间:2018-06-15 18:33:45

标签: symfony session flash-message

我正在尝试从ContactAction设置flash消息,然后在主页上重定向,但在它上面,我看不到我的flash消息,也许我的会话被重置了?我能帮忙吗,我是Symfony的初学者。

包含索引和联系人函数的CoreController:

<?php
namespace OC\CoreBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class CoreController extends Controller
{

    public function indexAction()
    {
        $ServiceAdverts = $this->container->get('oc_core.listAdverts');
        $adList = $ServiceAdverts->getListAdverts();

        return $this->render("OCCoreBundle:Core:index.html.twig", array(
        'listAdverts' => $adList
        ));
    }

    public function contactAction()
    {
        $this->addFlash('info', 'Contact page not ready yet !');

        return $this->redirectToRoute('oc_core_homepage');
    }
}

Twig模板(主页):

{% block body %}

<div>
    Messages flash :
    {% for msg in app.session.flashBag.get('info') %}
        <div class="alert alert-success">
            {{ msg }}
        </div>
    {% endfor %}

</div>
<h2>Liste des annonces</h2>

<ul>
    {% for advert in listAdverts %}
        <li>
            <a href="{{ path('oc_platform_view', {'id': advert.id}) }}">
                {{ advert.title }}
            </a>
            par {{ advert.author }},
            le {{ advert.date|date('d/m/Y') }}
        </li>
    {% else %}
        <li>Pas (encore !) d'annonces</li>
    {% endfor %}
</ul>

<a href="{{ path('oc_core_contact') }}">Contact</a>

{% endblock %}

2 个答案:

答案 0 :(得分:1)

Symfony 3.3 made improvements to flash messages所以你的Twig模板应该看起来不同。 app.session.flashBag.get()调用现已替换为app.flashes()

所以你的Twig代码现在是:

{% for msg in app.flashes('success') %}
    <div class="alert alert-success">
        {{ msg }}
    </div>
{% endfor %}

答案 1 :(得分:0)

试试这个,适用于3.2和3.4

{% for type, flash_messages in app.session.flashBag.all %}
    {% for msg in flash_messages %}
        <div class="alert alert-{{ type }}">
            {{ msg }}
        </div>
    {% endfor %}
{% endfor %}

另一件事是,一旦你调用flashBag,它就会变空,所以你不能再使用它两次。检查您的代码是否在第二次重定向之前未在另一页上调用...