fenom/docs/ru/tags/set.md

81 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

Тег {set}
=========
### {set}
Тег {set} используется для установки значения переменной в процессе выполнения шаблона.
```smarty
{set $var=(expr)}
```
```smarty
{set $var}
... any content ...
{/set}
```
```smarty
{set $var|modifiers}
... any content ...
{/set}
```
Имя переменной `$var` должно соответствовать [принятому правилу именования переменных](../syntax.md#Переменные).
Выражение `expr` может быть любое сочетание [переменных](../syntax.md#Переменные), [скалярных значений](../syntax.md#Скалярные+значения) и массивов.
```smarty
{set $v = 5}
{set $v = "value"}
{set $v = $x+$y}
{set $v = 4}
{set $v = $z++ + 1}
{set $v = --$z}
{set $v = $y/$x}
{set $v = $y-$x}
{set $v = $y*$x-2}
{set $v = ($y^$x)+7}
{set $v = [1,2,3]}
{set $v = []}
{set $v = ["one"|upper => 1, 4 => $x, "three" => 3]}
{set $v = ["key1" => $y*$x-2, "key2" => ["z" => $z]]}
{set $v = count([1,2,3])+7}
```
В качестве значения переменной можно задать результат отрисовки фрагмента шаблона:
```smarty
{set $v}
Some long {$text|trim}
2014-09-08 01:17:48 +04:00
{/set}
```
2014-09-08 01:17:48 +04:00
Такой вариант создания позволяет применить модификаторы к данным перед тем как они будут сохранены в переменную:
```smarty
2021-10-24 15:38:18 +03:00
{set $v|escape} {* применение модификатора к значению *}
Some long {$text|trim}
2014-09-08 01:17:48 +04:00
{/set}
```
### {add}
2014-09-08 01:17:48 +04:00
Тег {add} делает тоже самое что и тег {set} за исключением того что сначала проверяет наличие переменной и если переменной нет — задет новое значение.
```smarty
{add $var = 'value'}
```
Работу тега можно описать следующим образом:
```smarty
{if $var is not set}
{set $var = 'value'}
{/if}
```
### {var}
Тег {var} старое название тега {set}, сейчас это одно и тоже.