mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
193 lines
6.2 KiB
Markdown
193 lines
6.2 KiB
Markdown
Синтаксис
|
||
=========
|
||
|
||
### Вывод переменной
|
||
|
||
Вывод значений переменных в шаблонизаторе Aspect идентичен правилам вывода шаблонизатора Smarty
|
||
|
||
```smarty
|
||
{$foo}
|
||
{$foo[4]}
|
||
{$foo.4}
|
||
{$foo.bar}
|
||
{$foo.'bar'}
|
||
{$foo."bar"}
|
||
{$foo[bar]}
|
||
{$foo['bar']}
|
||
{$foo["bar"]}
|
||
{$foo.$bar}
|
||
{$foo[$bar]}
|
||
{$foo->bar}
|
||
{$foo->bar()}
|
||
```
|
||
|
||
Комбинированные варианты
|
||
|
||
```smarty
|
||
{$foo.bar.baz}
|
||
{$foo.$bar.$baz}
|
||
{$foo[4].baz}
|
||
{$foo[4].$baz}
|
||
{$foo.bar.baz[4]}
|
||
{$foo->bar($baz, 2, $bar)}
|
||
{"foo"}
|
||
```
|
||
|
||
### Математические операции
|
||
|
||
```smarty
|
||
{$x+$y} // will output the sum of x and y.
|
||
{$foo[$x+3]} // as array index
|
||
{$foo[$x+3]*$x+3*$y % 3}
|
||
```
|
||
|
||
### Объявление переменных
|
||
|
||
```smarty
|
||
{var $foo = $x + $y}
|
||
{var $foo = $x.y[z] + $y}
|
||
{var $foo = strlen($a)}
|
||
{var $foo = myfunct( ($x+$y)*3 )}
|
||
{var $foo.bar.baz = 1}
|
||
```
|
||
|
||
#### Объявление массивов
|
||
|
||
```smarty
|
||
{var $foo=[1,2,3]}
|
||
{var $foo=['y'=>'yellow','b'=>'blue']}
|
||
{var $foo=[1,[9,8],3]} // can be nested
|
||
```
|
||
|
||
### Работа с объектами
|
||
|
||
```smarty
|
||
{$object->method1($x)->method2($y)}
|
||
{var $foo=$object->item->method($y, 'named')}
|
||
```
|
||
|
||
|
||
### Работа со строками
|
||
|
||
Строки в Aspect обрабатываются идентично правилам подстановки переменных в строки в PHP, т.е. в двойных кавычках переменная заменяется на её значение, в одинарных замены не происходит.
|
||
В отличие от Smarty в строках не обрабатываются управляющие конструкции, например "if", но работают модификаторы.
|
||
|
||
```smarty
|
||
{var $foo="Ivan"}
|
||
{var $user.name="Ivan"}
|
||
{"Hi, $foo"} выведет "Hi, Ivan"
|
||
{"Hi, {$foo}"} выведет "Hi, Ivan"
|
||
{"Hi, {$user.name}"} выведет "Hi, Ivan"
|
||
{'Hi, $foo'} выведет 'Hi, $foo'
|
||
{'Hi, {$foo}'} выведет 'Hi, {$foo}'
|
||
```
|
||
|
||
### Модификаторы
|
||
|
||
* Модификаторы позволяют изменить значение переменной перед выводом или использованием в выражении
|
||
* Модификаторы записываются после переменной через символ вертикальной черты "|"
|
||
* Модификаторы могут иметь параметры, которые записываются через символ двоеточие ":" после имени модификатора
|
||
* Параметры модификаторов друг от друга также разделяются символом двоеточие ":"
|
||
* В качестве параметров могут использоваться переменные.
|
||
* Модификаторы могут составлять цепочки. В этом случае они применяются к переменной последовательно слева направо
|
||
|
||
```smarty
|
||
{var $foo="Ivan"}
|
||
{$foo|upper} выведет "IVAN"
|
||
{$foo|lower} выведет "ivan"
|
||
{$looong_text|truncate:80:"..."} обрежет текст до 80 символов и добавит "..." в конец текста
|
||
{$looong_text|lower|truncate:$settings.count:$settings.etc}
|
||
{var $foo="Ivan"|upper} переменная $foo будет содержать "IVAN"
|
||
```
|
||
|
||
Подробнее модификаторы описаны в разделе [модификаторы](./docs/modifiers.md)
|
||
|
||
### Функции
|
||
|
||
Каждый тэг шаблонизатора либо выводит переменную, либо вызывает какую-либо функцию.
|
||
Тег вызова функции начинается с названия функции и содержит список аргументов:
|
||
|
||
```smarty
|
||
{FUNCNAME attr1 = "val1" attr2 = $val2}
|
||
```
|
||
|
||
Это общий формат функций, но могут быть исключения, например функция {var}, использовавшаяся выше.
|
||
|
||
```smarty
|
||
{include file="my.tpl"}
|
||
{mailto address="bzick@megagroup.ru" text="Article's author"}
|
||
{var $foo=5}
|
||
{if $user.loggined}
|
||
Welcome, <span style="color: red">{$user.name}!</span>
|
||
{else}
|
||
Who are you?
|
||
{/if}
|
||
```
|
||
|
||
Аргументы
|
||
|
||
Аргументы принимают любой формат переменных, в том числе результаты арифметических операций и модификаторов.
|
||
|
||
```smarty
|
||
{funct arg=true}
|
||
{funct arg=5}
|
||
{funct arg=1.2}
|
||
{funct arg='string'}
|
||
{funct arg="string this {$var}"}
|
||
{funct arg=[1,2,34]}
|
||
{funct arg=$x}
|
||
{funct arg=$x.c}
|
||
```
|
||
|
||
```smarty
|
||
{funct arg="ivan"|upper}
|
||
{funct arg=$a.d.c|lower}
|
||
```
|
||
|
||
```smarty
|
||
{funct arg=1+2}
|
||
{funct arg=$a.d.c+4}
|
||
{funct arg=($a.d.c|count+4)/3}
|
||
```
|
||
|
||
|
||
|
||
###
|
||
|
||
Как и в Smarty, в шаблонизаторе Aspect используются фигурные скобки для отделения HTML от кода Aspect.
|
||
Если требуется вывести текст, содержащий фигурные скобки помните о следующих возможностях:
|
||
|
||
1. Использование блочного тега `{ignore}{/ignore}`. Текст внутри этого тега не компилируется шаблонизатором и выводится "как есть".
|
||
2. Если после открывающей фигурной скобки есть пробельный символ, то она не воспринимается как разделитель Aspect и код после неё выводится "как есть".
|
||
|
||
Пример:
|
||
|
||
```smarty
|
||
{ignore}
|
||
<style>
|
||
h1 {font-size: 24px; color: #F00;}
|
||
</style>
|
||
{/literal}
|
||
<script>
|
||
(function (text) {
|
||
var e = document.createElement('P');
|
||
e.innerHTML = text;
|
||
document.body.appendChild(e);
|
||
})('test');
|
||
</ignore>
|
||
```
|
||
|
||
Выведет
|
||
|
||
```html
|
||
<style>
|
||
h1 {font-size: 24px; color: #F00;}
|
||
</style>
|
||
<script>
|
||
(function (text) {
|
||
var e = document.createElement('P');
|
||
e.innerHTML = text;
|
||
document.body.appendChild(e);
|
||
})('test');
|
||
</script>
|
||
``` |