【问题标题】:Flash Message disappears on redirect in Symfony 2.1在 Symfony 2.1 中,Flash 消息在重定向时消失
【发布时间】:2012-09-26 14:11:37
【问题描述】:

我正在从 Symfony 2.0 迁移到 Symfony 2.1。

我的控制器上有以下简单代码:

public function createEntidadeAction() {
    $this->get('session')->getFlashBag()->set('error', 'message');
    return $this->redirect($this->generateUrl('EntidadeBundle_index'));
}

如果我产生错误(例如通过错误的路由),我会在分析器上检查是否存在闪存消息。

但是,如果我让重定向成功,则 Flash 消息会消失,并且不会显示任何内容。我在相应的 Twig 模板上有以下内容:

{% for flashMessage in app.session.flashbag.get('error') %}
    <div class="flash-notice">
        {{ flashMessage }}
    </div>
{% endfor %}

我想不通。我错过了什么? Flash 消息应该在第一次重定向之后持续,不是吗?

【问题讨论】:

    标签: symfony symfony-2.1 flash-message


    【解决方案1】:

    首先,尝试在闪存包上使用add 方法而不是set。其次,试试这个适合我的模板:

    {% for type, flashMessages in app.session.flashbag.all() %}
        {% for flashMessage in flashMessages %}
            <div class="alert alert-{{ type }}">
                {{ flashMessage|trans }}
            </div>
        {% endfor %}
    {% endfor %}
    

    【讨论】:

    • 问题不在于我显示它的方式。闪存消息字面上消失了。如果我查看分析器,则不存在 Flash 消息。在第一次重定向之后。使用 add 并没有改变这一点。也许这是一些 php 配置。我在 config.yml 中有这个:session: storage_id: session.storage.mock_file 所以它可以有 php.ini 配置。
    • 模拟文件存储?它应该用于测试——而不是真正的会话。使用session.storage.native
    • 问题是我需要本地 symfony 会话与主会话具有相同的会话保存路径。在本地值中我有 C:/wamp/www/Symfony/symproject/app/cache/dev/sessions 和主值我有 c:/wamp/tmp。出于身份验证的原因,这是不行的(我使用的是简单的 saml php)。在这种情况下我该怎么办?我在 Symfony 2.0 上没有这个问题。本地会话保存路径值没有被 symfony 更改。
    • 只需将framework:session:save_path 中的config.yml 设置为任何你想要的。
    • 我的项目在 git 上。并且保存路径可能会有所不同,具体取决于我是否在我的本地机器上。我不认为强制这样做是一个好习惯。是否可以从主会话中获取价值?来自 php.ini 的值?在 symfony 2.0 中这是开箱即用的。
    【解决方案2】:

    我想通了。

    由于会话问题,没有显示 Flash 消息。

    Symfony 2.1 现在默认使用 session.storage.native 作为 storage_id 和 handler_id。

    请检查此会话问题是如何解决的here

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多