Руководтсво администратора/разработчика

Документация

Язык быстрой разработки

Возможности разработки


Синтаксис

Для генерации шаблонов многие динамические языки генерируют данные путем написания кода в статических файлах HTML.

(Например, JSP реализуется путем вставки <%=....=%>, PHP - путем вставки <?php.....?> и т.д)

В шаблонизаторе BuildBox для этих целей используется вставлки {{ ... }}

Например:

$Name = "Маша"

Привет,  {{$Name}}  -->  Привет, Маша


Переменные шаблона

Точка (.)

Переменная шаблона может быть логической, строковой, символьной, целой, с плавающей точкой, мнимой или сложной константой.

Данные, передаваемые в шаблон, могут быть доступны с помощью точки {{ . }}.

Если данные сложного типа, то к их полям можно получить доступ с помощью точки {{ .FieldName }}.

Точки могут быть объединены в цепочку, если данные содержат несколько сложных структур.

{{ .Struct.StructTwo.Field }}

Именованные переменные {{$переменная}}

Мы можем передать переменной любое другое значение, например: {{$variable := "Вася"}}

Чтобы использовать переменную, мы вызываем ее в шаблоне с помощью {{$variable}}.

{{$variable := .}}
<h1> Маша и {{$variable}} друзья на век.</h1>

Мы можем сохранять данные, передаваемые в шаблон в рамках исполняемого контекста. Они также в переменной и использованы по всему шаблону. 

Например так: {{$variable := .}}. Здесь мы используем $variable, чтобы создать переменную, а затем инициализировать ее значением, переданным в шаблон контекстом . (точка). 

Область видимости переменных

Область выдимости переменных ограничивается конструкцией, в которой она была инициирована и используется. Т.е. если мы создали переменную внутри цикла или условия, то за пределами данного цикла/условия эта переменная доступна не будет. Если переменная была объявлена за пределами цикла/условия, то изменения произошедшие с ней внутри цикла/условия не будет доступны за его пределами.

Создание глобальных переменных

Для создания переменных, в которых можно сохранять значения, которые смогут быть использованы внутри всех конструкций на странице существует механизм сохранения переменных в текущем контексте.

Текущий контекст - это данные, которые получает шаблон в момент генерации. В контекст мы помещаем данные из запросов, сервисные значения, данные конфигурации шаблона и т.д. (см. Контекст шаблона)

Вы можете создать любую переменную внутри данного контекста, а также обращаться к ней в любом месте генерируемой страницы (шаблона)

Также существует возможность самостоятельно создать переменную структуры используя ф-цию мультиплексирования значений (dict) (см. Встроенные фукнции)

Мы рекомендуем использовать механизм сохранения глобальных переменных в Текущем контексте.


Условия (if-else)

Шаблонизатор поддерживает операторы сравнения - if / else. Мы можем использовать if для проверки значений, если они не существуют (else), мы можем использовать другое значение.

Пустыми значениями являются: false, 0, любой массив, фрагмент, карта или строка нулевой длины.

Например,

<h1>Привет, {{if .Name}} {{.Name}} {{else}} незнакомец {{end}}!</h1>

Если .Name существует и равен например "Мария", по будет напечатано - Привет, Мария. В противном случае будет напечатано: Привет, незнакомец.

Шаблонизатор также предоставляет, {{else if .Name2 }} которые могут быть использованы для сравнения второго варианта значения после if.


Конвеерная обработка (|)

Конвеерная обработка позволяет передавать результаты выполнения одной фукнции в другую через оператор |

Результат выполенения первоочередной фукнции является первым аргументом для следующей в конвеере функции (остальные параметры следуют последовательно, согласно синтаксису вызываемой функции.

Например

{{if tostring $limil_roles | ne "yes"}}
Операции
{{end}}

В данном примере, функция tostring получает один параметр $limil_roles, далее результат (в данном случае строка) передается в качестве первого аргумента для функции ne (второй аргумент "yes").