如何在Symfony flash消息中使用HTML标记

时间:2016-04-08 09:08:33

标签: php html symfony twig

使用Symfony 2.7我想在flash消息中包含HTML:

class MyController extends Controller {
    public function someAction(Request $request) {
        ...
        $this->addFlash('success', $tranlator->trans('some.success.msg', array(), 'app'));
        ...
    }
}


// app.yml
some:
    success:
         msg: Text with some <strong>HTML</strong>

这会创建一条Flash消息

Text with some <strong>HTML</strong> 

而不是

  

包含 HTML

的文字

在我自己的Twig模板中,我会使用raw过滤器直接显示HTML代码而不是转义版本。但是我怎样才能在addFlash(...)内实现相同的目标?

2 个答案:

答案 0 :(得分:10)

不确定我真的理解你的问题。如果这不是你要求的,只要说出来,我就会删除这个答案 如documentation中所述,您使用

app.session.flashbag.get('success')

检索您的Flash消息。 示例:

{% for flash_message in app.session.flashbag.get('success') %}
        {{ flash_message|raw }}
{% endfor %}

答案 1 :(得分:5)

我认为这不能直接完成。但是你可以使用一些html和css来调整显示消息的位置。

像:

设置Flash消息:

$this->get('session')->getFlashBag()->add('notice', array('type' => 'success', 'title' => 'Done!', 'message' => 'OK! It is done!'));

在twig文件中:

{% for msg in app.session.flashbag.get('notice') %}
<div class="alert alert-{{ msg.type }}">
    <strong>{{ msg.title }}</strong><br/>{{ msg.message }}
</div>
{% endfor %}