首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何访问peekAll()在base.html.twig中检查消息/闪存

如何访问peekAll()在base.html.twig中检查消息/闪存
EN

Stack Overflow用户
提问于 2018-10-26 14:28:29
回答 2查看 588关注 0票数 1

在symfony 4.1中

在控制器中:

代码语言:javascript
复制
$this->addFlash(
    'notice',
    'Your changes were saved!'
);
 return $this->render(...);

树枝基模板:

代码语言:javascript
复制
{% for message in app.flashes('notice') %}
    <div class="flash-notice">
        {{ message }}
    </div>
{% endfor %}

这很好,但我想将所有消息包装在一个div中。以下内容不起作用:

代码语言:javascript
复制
{% 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逻辑?

EN

Stack Overflow用户

发布于 2018-10-26 14:38:28

我不知道这是否是最好的办法,但以下是我的解决办法。

在base.html.twig中:

代码语言:javascript
复制
{% 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并处理它。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53010910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档