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