【问题标题】:Twig doesn't support do / while?Twig 不支持 do / while?
【发布时间】:2020-07-02 14:09:57
【问题描述】:

问题是Twig不支持while(repeat)循环,Twig只支持For循环!

我写了一段代码,我相信只能使用while循环来完成!

我在 php 中的代码是:

$j=0;
$i=0;
do {
    $i=$i+3;
    for ($x=$j;$x=$i;$x++) {
        <h1> t[x]</h1>
    }
}while ($i >= $max); 

我不能把它翻译成 Twig ,因为 twig 不支持 do/while

这里的另一个例子是 php 中的 for 循环:

for ($x = 0; $x <= 10; $x++) {

}

翻译成树枝时是:

{% for i in 0..10 %}

{% endfor %}

我的问题是,如果 php 代码是:

for ($x = 0; $x <= 10; $x++++)

如果是($x=$x+3) 而不是($x=$x+1) 会怎样

【问题讨论】:

  • 将其翻译成 Twig 的目的是什么?它是一个模板引擎,它不应该执行过多的逻辑。也许如果你添加一些关于大局的信息,我们可以让你走上正确的道路。
  • 问题是我无法在后端(控制器)中制作该代码,我必须在视图中完成,因为每 3 个项目必须一起打印...
  • 创建一个服务,将后端数据分组为适合视图的格式,以便简单地对其进行迭代并输出。避免模​​板本身内部的任何复杂逻辑。
  • 我不知道该怎么做。

标签: php symfony while-loop twig do-while


【解决方案1】:

Twig 内置的.. 运算符只是范围函数的语法糖(步长为 1,如果开始大于结束,则为 -1):

{% for i in 0..3 %}
    {{ i }},
{% endfor %}

因此,您可以使用range 运算符重写它,该运算符也可以采用第三个参数 - step

{% for i in range(0, 6, 2) %}
    {{ i }},
{% endfor %}

{# outputs 0, 2, 4, 6, #}

来自:https://twig.symfony.com/doc/2.x/functions/range.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 2013-12-01
    • 1970-01-01
    • 2019-10-11
    • 2018-04-28
    • 1970-01-01
    • 2016-02-21
    • 2013-10-07
    相关资源
    最近更新 更多