Руководтсво администратора/разработчика
Документация
Язык быстрой разработки
Возможности разработки
Синтаксис
Для генерации шаблонов многие динамические языки генерируют данные путем написания кода в статических файлах 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").