【问题标题】:Flash message in symfony 3.4symfony 3.4 中的 Flash 消息
【发布时间】:2018-06-15 18:33:45
【问题描述】:

我正在尝试从 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');
    }
}

树枝模板(主页):

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

【问题讨论】:

  • 我刚刚测试了它,对我来说,你的代码有效。你有什么错误吗?
  • @DanCostinel no :/ 那么可能是什么问题?
  • 您是否发布了主页树枝模板的完整代码?
  • 完成,现在可以看到了。希望你能找到解决方案:/
  • 那么显然你还有一个问题,因为我没有项目源代码,所以我无法告诉你任何事情。

标签: symfony session flash-message


【解决方案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 %}

【讨论】:

  • 好的,我试试看。
  • 所以我尝试了您的代码,当 addflash 在 IndexAction 上时(然后在同一页面上)我可以工作,但是在 contactAction 上,当我在主页上重定向时看不到 flash 消息
  • 您所在的页面不应影响 Flash 消息 - 您的某个模板可能没有 Twig 代码来显示它。
  • 更多可能会有所帮助,但 Twig 代码更可能是问题所在,也许您没有包含/扩展任何具有 Flash Twig 代码的内容
  • 我编辑了我的帖子,你可以看到完整的代码。而且我不认为问题出在树枝上,正如我所说,当我将 addflash 放在 indexAction 函数中时,我可以看到它,但当我将它放在 contactAction 中时却没有。确切地说,在我的主页上,我在contactAction 上有一个类似的观点。但也许我错了
【解决方案2】:

试试这个,在 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,它就会变成空的,所以你不能使用它两次。在第二次重定向之前检查您的代码是否没有在另一个页面上被调用...

【讨论】:

  • 这个相同,我仔细检查了我在主页上只调用过一次:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多