在symfony 4.1中
在控制器中:
$this->addFlash(
'notice',
'Your changes were saved!'
);
return $this->render(...);树枝基模板:
{% for message in app.flashes('notice') %}
<div class="flash-notice">
{{ message }}
</div>
{% endfor %}这很好,但我想将所有消息包装在一个div中。以下内容不起作用:
{% if app.flashes is not empty %}
<div id="messageBox" class="overlay">
<div class="message" onclick="slide(document.querySelector('#messageBox')); this.classList.add('fadeAway');">
{% for label, messages in app.flashes %}
<section class="{{ label }}">
<p><b>{{ label }}</b></p>
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
</section>
{% endfor %}
</div>
</div>
{% endif %}问题是,行{% if app.flashes is not empty %}擦除消息,因此循环和空结果如下。
如何将peekAll()用于if逻辑?
发布于 2018-10-26 14:38:28
我不知道这是否是最好的办法,但以下是我的解决办法。
在base.html.twig中:
{% set flashes = app.flashes %}
{% if flashes is not empty %}
<div id="messageBox" class="overlay">
<div class="message" onclick="slide(document.querySelector('#messageBox')); this.classList.add('fadeAway');">
{% for label, messages in flashes %}
<section class="{{ label }}">
<p><b>{{ label }}</b></p>
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
</section>
{% endfor %}
</div>
</div>
{% endif %}基本上,将app.flashes的返回值设置为flashes并处理它。
https://stackoverflow.com/questions/53010910
复制相似问题