繁体   English   中英

twig drupal 8 中的 switch 语句

[英]switch statement in twig drupal 8

drupal 8 中的树枝是否有 switch case 语句?

类似的东西:

{% set size = rows | length %}
{% switch rows %}
    {% case "1" %}
        {{ do something }}
    {% case "2" %}
        {{ do example }}
    {% case "3" %}
        {{ do that }}
    {% default %}
        <p>A font walks into a bar.</p>
        <p>The bartender says, “Hey, we don’t serve your type in here!”</p>
{% endswitch %}

我试过这个:

 {% if size ==1 %}
values 1
{% elseif size ==2 %}
values 2
{% else %}
value not found
{% endif %}

但它似乎停留在第一个语句上,即使值为 2,也永远不会进入第二个部分/语句

我认为 Symfony/Twig 中不存在 Switch 函数。 你必须依靠一个标准

{% if condition %}
...
{% elseif condition2 %}
...
{% else %}
...
{% endif %}

希望我能帮上忙..

我还想为我的 Drupal 8 视图模板做一个“switch 语句”,但我无法让它工作。 我有以下几点:

{% set rowsLength = rows|length %}
{% switch rowsLength %}
    {% case 1 %}
        ...
    {% case 2 %}
        ...
    {% case 0 %}
        ...
{% endswitch %}

但是当上传时它只是给出了没有呈现并放置在“出现问题”的消息上。 所以我最终使用了以下“if”语句:

{% set rowsLength = rows|length %}
{% if rowsLength > 0 and rowsLength < 4  %}
    {% set nav_size = "small-carousel" %}
{% elseif rowsLength > 4 and rowsLength < 6 %}
    {% set nav_size = "medium-carousel" %}
{% else %}
    {% set nav_size = "" %}
{% endif %}

希望它有帮助。

我也遇到过这个问题。 我希望 switch 语句可以帮助我编写更简洁的代码,但我总是遇到语法错误,意外的 switch 标记。

我发现 switch 语句记录在一些 3rd 方网站上,但官方文档中没有提到它https://twig.symfony.com/doc/3.x/

之所以如此,twig 的开发人员希望保持标签简单,以便网页设计人员使用。 switch 语句的功能已经被 if elseif else endif 覆盖了https://github.com/twigphp/Twig/pull/185

如果您仍然想在模板中使用 switch 语句,可以使用插件添加该功能,例如https://packagist.org/packages/buzzingpixel/twig-switch

归根结底,仅使用 if elseif 等确实没有那么糟糕。 它可以写得相当干净:

<button type="button" class="btn {%
if     project.status == 'ok'     %}btn-success{%
elseif project.status == 'active' %}btn-info{%
elseif project.status == 'failed' %}btn-danger{%
else                              %}btn-warning{%
endif
%}">

我也使用 if 语句解决了

{% set rowsLength = rows|length %}
{% if size == 1 %}
values 1
{% elseif size == 2 %}
values 2
{% else %}
value not found
{% endif %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM