Сменить заявление в веточку друпал 8

Есть ли у ветки в drupal 8 инструкция переключения

что-то вроде

{% 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

Пожалуйста посоветуй

4 ответа

Я думаю, что в Symfony/Twig не существует функции Switch. Вы должны отступить от стандарта

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

Надеюсь, я мог помочь..

Я также хотел сделать "заявление о переключении" для моего шаблона представления для Drupal 8, но я не смог заставить его работать. У меня было следующее:

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

Но при загрузке он просто дал, не рендерится и поставит на это сообщение "что-то не так". В итоге я использовал следующее выражение "если":

{% 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 задокументирован на некоторых сторонних веб-сайтах, но не упоминается в официальной документации 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 %}
Другие вопросы по тегам