fenom/docs/ru/tags/set.md

81 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Тег {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}
{/set}
```
Такой вариант создания позволяет применить модификаторы к данным перед тем как они будут сохранены в переменную:
```smarty
{set $v|escape} {* применение модификатора к значению *}
Some long {$text|trim}
{/set}
```
### {add}
Тег {add} делает тоже самое что и тег {set} за исключением того что сначала проверяет наличие переменной и если переменной нет — задет новое значение.
```smarty
{add $var = 'value'}
```
Работу тега можно описать следующим образом:
```smarty
{if $var is not set}
{set $var = 'value'}
{/if}
```
### {var}
Тег {var} старое название тега {set}, сейчас это одно и тоже.