在flash消息symfony2中添加模板

时间:2014-08-08 22:10:25

标签: twitter-bootstrap symfony

在创建和删除对象之后,我重定向到相同的操作(indexAction)。 创建之后,我想将此引导消息呈现为flash消息:

<div class="alert alert-success" role="alert">
  <a href="#" class="alert-link">...</a>
</div>

但删除后,我想渲染另一个html块:

<div class="alert alert-danger" role="alert">
  <a href="#" class="alert-link">...</a>
</div>

将此消息传递给Flash消息的最佳方法是什么? 因为,我认为传递所有HTML不是个好主意?

$this->get('session')->getFlashBag()->add(
        'notice',
        '<div class="alert alert-danger" role="alert">
             <a href="#" class="alert-link">...</a>
         </div>'
    );

有没有更好的方法来解决这个问题?

3 个答案:

答案 0 :(得分:9)

这是我通常做的事情:

{% for type, flashes in app.session.flashbag.all %}
    {% for flash in flashes %}
        <div class="alert alert-{{ type }} fade in">
            {{ flash }}
        </div>
    {% endfor %}
{% endfor %}

来自控制器:

$this->addFlash('success', 'What an awesome message !');

将创建alert-success

答案 1 :(得分:6)

在您的控制器中

$this->get('session')->getFlashBag()->add('info', 'info message');

在您的视图中

{% for message in app.session.flashbag.get('info') %}
    <div class="alert alert-info alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert">
            <span aria-hidden="true">&times;</span>
            <span class="sr-only">Close</span>
        </button>
        <p>{{ message }}</p>
    </div>
{% endfor %}

答案 2 :(得分:4)

我找到了更好的解决方案。

在我的控制器中:

$this->get('session')->getFlashBag()->add(
    'notice',
    array(
        'alert' => 'success',
        'title' => 'Success!',
        'message' => 'New word has been added successfully.'
    )
);

这是我的观点:

{% if app.session.started %}
    {% for flashMessage in app.session.flashbag.get('notice') %}
        <div class="alert alert-{{ flashMessage.alert }} alert-dismissible" role="alert">
            <button type="button" class="close" data-dismiss="alert">
                <span aria-hidden="true">&times;</span><span class="sr-only">Close</span>
            </button>
            <strong>{{ flashMessage.title }}</strong> {{ flashMessage.message }}
        </div>
    {% endfor %}
{% endif %}