2014-08-05 17:49:42 +04:00
|
|
|
|
Тег {switch}
|
2014-08-01 12:12:19 +04:00
|
|
|
|
============
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Тег `{switch}` подобен серии операторов `{if}` с одинаковым условием.
|
|
|
|
|
Во многих случаях вам может понадобиться сравнивать одну и ту же переменную (или выражение) с множеством различных значений,
|
|
|
|
|
и выполнять различные участки кода в зависимости от того, какое значение принимает эта переменная (или выражение).
|
|
|
|
|
Это именно тот случай, для которого удобен тег `{switch}`.
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Тег `{switch}` в качестве аргумента принимает любое выражение.
|
|
|
|
|
Каждый возможный случай описывается тегом `{case value}` значения `value` которых могут быть только явно заданные скалярные значения.
|
|
|
|
|
Случаи могут повторятся, в этом случае блоки для которых повторялся случай будут последовательно выполнены по направлению сверху вниз.
|
|
|
|
|
Случай `default` подразумевает обработку если ни один случай не произошел.
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
|
|
|
|
```smarty
|
|
|
|
|
{switch <condition>}
|
2014-08-05 17:49:42 +04:00
|
|
|
|
{case value1}
|
2014-08-01 12:12:19 +04:00
|
|
|
|
...
|
2014-08-05 17:49:42 +04:00
|
|
|
|
{case value2, value3, ...}
|
2014-08-01 12:12:19 +04:00
|
|
|
|
...
|
2014-08-05 17:49:42 +04:00
|
|
|
|
{case value3}
|
2014-08-01 12:12:19 +04:00
|
|
|
|
...
|
|
|
|
|
{case default, <value1>}
|
|
|
|
|
...
|
|
|
|
|
{/switch}
|
|
|
|
|
```
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Рассмотрим пример:
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
|
|
|
|
```smarty
|
2014-08-05 17:49:42 +04:00
|
|
|
|
{switch $color}
|
|
|
|
|
{case 'red', 'scarlet'}
|
|
|
|
|
Оттенок красного цвета
|
|
|
|
|
{case 'green', 'harlequin'}
|
|
|
|
|
Оттенок зеленого цвета
|
|
|
|
|
{case 'black', 'grey', 'gray'}
|
|
|
|
|
Черный цвет
|
|
|
|
|
{case 'white', 'grey', 'gray'}
|
|
|
|
|
Белый цвет
|
|
|
|
|
{case default, 'unknown'}
|
|
|
|
|
Неизвестный цвет
|
2014-08-01 12:12:19 +04:00
|
|
|
|
{/switch}
|
|
|
|
|
```
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
если задать `$color = 'red'` результатом будет:
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
|
|
|
|
```
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Оттенок красного цвета
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
для случая `$color = 'grey'` будут вызваны два бока:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Черный цвет
|
|
|
|
|
Белый цвет
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
случаи `$color = 'yellow'` и `$color = 'unknown'` будут обработаны последним блоком:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
Неизвестный цвет
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```
|