在创建和删除对象之后,我重定向到相同的操作(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>'
);
有没有更好的方法来解决这个问题?
答案 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">×</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">×</span><span class="sr-only">Close</span>
</button>
<strong>{{ flashMessage.title }}</strong> {{ flashMessage.message }}
</div>
{% endfor %}
{% endif %}