我正在尝试从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 %}
答案 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,它就会变空,所以你不能再使用它两次。检查您的代码是否在第二次重定向之前未在另一页上调用...