## case

## Description

When evaluating a large number of conditions.

## Syntax



## Example



## for

## Description

Loop over a collection.

## Syntax



## Example

Instead of looping over an existing collection, you can define a range of numbers to loop through. The range can be defined by both literal and variable numbers:



## Variables

During every for loop there are following helper variables available for extra styling needs:

NameTypeDescription
forloop.lengthIntegerlength of the entire for loop
forloop.indexIntegerindex of the current iteration
forloop.index0Integerindex of the current iteration (zero based)
forloop.rindexIntegerhow many items are still left?
forloop.rindex0Integerhow many items are still left? (zero based)
forloop.firstBooleanis this the first iteration?
forloop.lastBooleanis this the last iteration?

## Parameters

Usefulness of a for loop can be enhanced by using parameters, such as `reversed` `limit` and `offset` to manipulate the objects being displayed. [Read more](🔗)



## if/else/unless

## Description

Boolean logic operations are available on all objects.

## Syntax



## Example



## Contains

Contains allows you to check if an array contains a specific string. This is very useful when dealing with `many_to_many` relationships. It will allow you to iterate over related entries, making sure there are no double entries.

Let's say we have a `many_to_many` relationship between `events` and `performances`, meaning that the same performance can belong to multiple events.

So if we want to iterate over all our `events` to get all `performances` but we don't want double entries, we could use contains.