Add docs.

Create compile dir for tests
This commit is contained in:
Ivan Shalganov
2013-02-07 20:04:00 +04:00
parent e969f1b4fc
commit 1ad3d6533d
6 changed files with 152 additions and 18 deletions

39
docs/tags/for.md Normal file
View File

@ -0,0 +1,39 @@
Tag {for}
=========
### {for}
{for $counter=<start> to=<end>[ step=<step>][ index=$index][ first=$first][ last=$last]}
{* ...code... *}
{break}
{* ...code... *}
{continue}
{* ...code... *}
{forelse}
{* ...code... *}
{/for}
Переменная $counter принимает значение <start> и увеличивает своё значение на <step> на каждой итерации цикла пока не достигнет или не станет больше <end>.
<step> является необязательным аргументом. Если не указан, считается равным единице.
$index имеет значение номера текущей итерации. Первая итерация имеет номер 0.
$first равно TRUE, если итерация первая.
$last равно TRUE, если итерация последняя.
Поля <start>, <end>, <step> могут быть числами, или переменными, значение которых приводится к числовому.
Значением параметров index, first, last может быть только переменная (допускаются вложенности на подобии $a.b.c, но массив $a.b должен быть объявлен).
### {break}
Тег `{break}` используется для выхода из цикла до достижения последней итерации. Если в цикле встречается тег {break}, цикл завершает свою работу, и далее выполняется код, следующий сразу за блоком цикла
### {continue}
Тег `{continue}` используется для прерывания текущей итерации. Если в цикле встречается тег {continue}, часть цикла, следующая после тега, не выполняется, и начинается следующая итерация. Если текущая итерация была последней, цикл завершается.
### {forelse}
Тег `{forelse}` ограничивает код, который должен быть выполнен, если сочетание полей <start>, <end> и <step> не обеспечивают ни одной итерации.

73
docs/tags/foreach.md Normal file
View File

@ -0,0 +1,73 @@
Tag {foreach}
=============
Перебор значений массива или итератора
### {foreach}
Перебор значений массива $list
```smaert
{foreach $list as $value}
<div>{$value}</div>
{/foreach}
```
Перебор ключей и значений массива $list
```smarty
{foreach $list as $key => $value}
<div>{$key}: {$value}</div>
{/foreach}
```
Получение номера (индекса) итерации
```smarty
{foreach $list as $value index=$index}
<div>{$index}: {$value}</div>
{/foreach}
```
Определение первого элемента
```smarty
{foreach $list as $value first=$first}
<div>{if $first} first item {/if} {$value}</div>
{/foreach}
```
Переменная `$first` будет иметь значение **TRUE**, если текущая итерация является первой.
Определение последнего элемента
```smarty
{foreach $list as $value last=$last}
<div>{if $last} last item {/if} {$value}</div>
{/foreach}
```
Переменная `$last` будет иметь значение **TRUE**, если текущая итерация является последней.
Использование last замедляет работу цикла и требует от `$list` быть **countable**. Если есть возможность используйте **first** параметр.
### {break}
Тег `{break}` используется для выхода из цикла до достижения последней итерации. Если в цикле встречается тег `{break}`, цикл завершает свою работу, и далее, выполняется код, следующий сразу за блоком цикла
### {continue}
Тег `{continue}` используется для прерывания текущей итерации. Если в цикле встречается тег `{continue}`, часть цикла, следующая после тега, не выполняется, и начинается следующая итерация. Если текущая итерация была последней, цикл завершается.
### {foreachelse}
Тег {foreachelse} ограничивает код, который должен быть выполнен, если итерируемый объект пуст.
```smarty
{var $list = []}
{foreach $list as $value}
<div>{if $last} last item {/if} {$value}</div>
{foreachelse}
<div>empty</div>
{/foreach}
```
В блоке `{foreachelse}...{/foreach}` использование `{break}`, `{continue}` выбросит исключение `Aspect\CompileException` при компиляции

36
docs/tags/var.md Normal file
View File

@ -0,0 +1,36 @@
Tag {var}
=========
Тег {var} предназначен для создания переменных в шаблонах.
```smarty
{var $var=EXPR}
```
К названию новой переменной предъявляются те же требования, что и к [именам переменных](http://www.php.net/manual/en/language.variables.basics.php) в PHP.
Выражение EXPR подразумевает любое поддерживаемое выражение.
```smarty
{var $v = 5}
{var $v = "value"}
{var $v = $x+$y}
{var $v = $z++}
{var $v = $z++ + 1}
{var $v = --$z}
{var $v = $y/$x}
{var $v = $y-$x}
{var $v = $y*$x-2}
{var $v = ($y^$x)+7}
// Присваивание массивов
{var $v = [1,2,3]}
{var $v = []}
{var $v = ["one"|upper => 1, 4 => $x, "three" => 3]}
{var $v = ["key1" => $y*$x-2, "key2" => ["z" => $z]]}
// Присваивание результата выполнения функции
{var $v = count([1,2,3])+7}
```