gpt4 book ai didi

symfony - Twig block 是空的吗? - 交响乐 2

转载 作者:行者123 更新时间:2023-12-04 19:57:28 24 4
gpt4 key购买 nike

我有一个带有以下 block 的 Twig 模板:

{% block dashboard %}
{% include "::user_dashboard.html.twig" %}
{% endblock dashboard %}

稍后在该模板中,我想根据该 block 中是否有任何内容在 div 上设置一个类(即,默认情况下,它将包含上面的内容,但此模板的子项可能会覆盖它并且清空它)。

我所拥有的(有点管用)是......

{% set _dashboard = block('dashboard') %}
{% set _mainWidth = ( _dashboard|trim is empty ? "no-dashboard" : "with-dashboard" ) #}
<div id="main" class="{{ _mainWidth }}">

这里的问题是整个仪表板 block 被调用了两次。除了该 block 呈现一些 Controller 操作,即 ...

{% render "UserWidget:userAppMenu" %}

... 并且该操作中的代码被调用了两次。由于各种原因,其中最重要的是性能,这会混淆该仪表板 block 中的某些内容。

所以,我的问题是……有什么方法可以在不加载两次的情况下判断该 block 是否为空?是否有一些非常简单的东西我错过了,或者这甚至可能吗?

谢谢!

编辑:

如果它有助于澄清事情,这是我的完整模板:

{% extends '::base.html.twig' %}

{% block layout %}

{% block header %}
{% include "::header.html.twig" %}
{% endblock header %}

<div id="container" class="row-fluid">

{% block dashboard %}
{% include "::user_dashboard.html.twig" %}
{% endblock dashboard %}

{% set _dashboard = block('dashboard') %}
{% set _mainWidth = ( _dashboard|trim is empty ? "no-dashboard" : "with-dashboard" ) %}
<div id="main" class="{{ _mainWidth }}">
<h1 class="page-title">{% block page_title %}{% endblock %}</h1>
{% block main_filters %}{% endblock %}

{% if app.session.flashbag.has('message') %}
<div class="alert alert-block alert-success">
<ul>
{% for flashMessage in app.session.flashbag.get('message') %}
<li>{{ flashMessage }}</li>
{% endfor %}
</ul>
</div>
{% endif %}

{% if app.session.flashbag.has('warning') %}
<div class="alert alert-block alert-success">
<ul>
{% for flashWarning in app.session.flashbag.get('warning') %}
<li>{{ flashWarning }}</li>
{% endfor %}
</ul>
</div>
{% endif %}

{% block body %}{% endblock %}

{% block footer %}
{% include "::footer.html.twig" %}
{% endblock footer %}
</div>

</div>

{% endblock layout %}

您可以在此处看到第 11 行和第 15 行 - 这两行实际上似乎都包含并处理了其中包含的内容。

最佳答案

这个呢?这样,当您调用 block('dashboard') 时, block 应该只呈现一次。

{# at top of twig #}
{% set _dashboard = block('dashboard') %}

{# where ever you include your block #}
<div>
{{ _dashboard|raw }}
</div>

{# and your main #}
{% set _mainWidth = ( _dashboard|trim is empty ? "no-dashboard" : "with-dashboard" ) #}
<div id="main" class="{{ _mainWidth }}">

关于symfony - Twig block 是空的吗? - 交响乐 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com