Twig:如何使用基于值的集成 if 条件编写 for 循环
Twig: How to write a for loop with an integrated if condition based on a value
情况
- 我有一个小的 symfony twig 应用程序,我在其中 运行 一个 for 循环来获取所有
显示的项目。
- 我想让用户决定他的内容是否是
以特定顺序或随机呈现,为此我将使用
树枝扩展函数 shuffle().
- 如果用户在后台激活checkbox shuffle,它会为变量activateShuffle输出yes。
- 我想激活 twig shuffle() 扩展,如果以上
提到变量是
问题
我找到了一种方法来处理这个要求。但是用下面的方法,我需要复制一些我觉得很不对的代码。
当前代码:
{% if activateShuffle == 'yes' %}
{% for item in images|shuffle() %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
{% else %}
{% for item in images %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
{% endif %}
解决方法
有没有办法在 for 循环中定义 if 条件?以便它检查变量是否具有特定值并添加扩展名?所以也许是这样的:
{% for item in images if activateShuffle == 'yes' add |shuffle() %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
感谢您的帮助
您可以在循环之前根据 activateShuffle
的值更改 images
变量,如下所示:
{% if activateShuffle == 'yes' %}
{% set images = images|shuffle() %}
{% endif %}
{% for item in images %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
使用宏:
{% macro render_images_conditional(images, doShuffle) %}
{% if doShuffle %}
{% set images = images|shuffle() %}
{⅜ endif %}
{% for item in images %}
...
{% endmacro %}
{{ _self.render_images_conditional(images, shuffle) }}
情况
- 我有一个小的 symfony twig 应用程序,我在其中 运行 一个 for 循环来获取所有 显示的项目。
- 我想让用户决定他的内容是否是 以特定顺序或随机呈现,为此我将使用 树枝扩展函数 shuffle().
- 如果用户在后台激活checkbox shuffle,它会为变量activateShuffle输出yes。
- 我想激活 twig shuffle() 扩展,如果以上 提到变量是
问题
我找到了一种方法来处理这个要求。但是用下面的方法,我需要复制一些我觉得很不对的代码。
当前代码:
{% if activateShuffle == 'yes' %}
{% for item in images|shuffle() %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
{% else %}
{% for item in images %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
{% endif %}
解决方法
有没有办法在 for 循环中定义 if 条件?以便它检查变量是否具有特定值并添加扩展名?所以也许是这样的:
{% for item in images if activateShuffle == 'yes' add |shuffle() %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
感谢您的帮助
您可以在循环之前根据 activateShuffle
的值更改 images
变量,如下所示:
{% if activateShuffle == 'yes' %}
{% set images = images|shuffle() %}
{% endif %}
{% for item in images %}
<div>
<h1>{{ item.title }}</h1>
<img src="{{ asset('images/')}}{{ item.imagename }}"/>
</div>
{% endfor %}
使用宏:
{% macro render_images_conditional(images, doShuffle) %}
{% if doShuffle %}
{% set images = images|shuffle() %}
{⅜ endif %}
{% for item in images %}
...
{% endmacro %}
{{ _self.render_images_conditional(images, shuffle) }}