Search code examples
drupaltwigtheming

switch statement in twig drupal 8


Does twig in drupal 8 have a switch case statement?

Something like:

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

I tried this:

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

But it seems its stucked on the first statement never goes to the second section/statement even when the value is 2


Solution

  • I was also looking to do a "switch statement" for my view template for Drupal 8, but I couldn't get it to work. I had the following:

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

    But when uploaded it just gave didn't render and put at that message of "something is wrong". So I ended up using the following "if" statement:

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

    Hope it helps.