Выражения
Внутри {{ ... }} можно не только вставить значение, но и посчитать, сравнить или выбрать текст по условию:
{{ $возраст >= 18 ? "Добро пожаловать!" : "Доступ с 18 лет" }}
Скидка 10%: {{ $цена * 0.9 }} ₽
{{ upper(first_name) ~ ", здравствуйте!" }}
Из чего состоит выражение
| Что | Как писать | Пример |
|---|---|---|
| Переменная контакта | $имя |
$город |
| Переменная с пробелами в имени | var("имя") |
var("Имя клиента") |
| Данные контакта | имя без $ |
first_name, phone |
| Глобальная переменная | global("имя") |
global("Курс (USD)") |
| Текст | в кавычках "..." или '...' |
"Добрый день" |
| Число | цифры, дробная часть через точку | 10, 0.9 |
| Логическое значение | true, false |
|
| Пустое значение | null |
|
| Функция | имя(аргументы) |
round($цена, 2) |
Внутри кавычек ничего не заменяется: {{ "цена $a" }} выведет цена $a.
Арифметика
| Оператор | Действие | Пример | Результат |
|---|---|---|---|
+ |
сложение | {{ 2 + 3 }} |
5 |
- |
вычитание | {{ 10 - 4 }} |
6 |
* |
умножение | {{ 3 * 4 }} |
12 |
/ |
деление | {{ 10 / 4 }} |
2.5 |
% |
остаток от деления | {{ 10 % 3 }} |
1 |
** |
степень | {{ 2 ** 10 }} |
1024 |
Скобки меняют порядок действий: {{ ($цена + $доставка) * 2 }}.
Дробные числа выводятся без лишних знаков: {{ 0.1 + 0.2 }} даст 0.3. Чтобы округлить, используйте round, для вывода с разделителями — number_format.
Сравнения
| Оператор | Значение |
|---|---|
== |
равно |
!= |
не равно |
>, >= |
больше, больше или равно |
<, <= |
меньше, меньше или равно |
Если с обеих сторон числа — даже записанные текстом, как значения переменных, — сравниваются числа: "10" > 9 верно.
Результат сравнения, выведенный сам по себе, — true или false: {{ $возраст >= 18 }}.
Логика
| Оператор | Значение |
|---|---|
and или && |
и |
or или || |
или |
not или ! |
не |
{{ $возраст >= 18 and $город == "Москва" ? "Приглашаем в офис" : "Работаем онлайн" }}
Условие
условие ? если_да : если_нет — выбирает один из двух вариантов:
{{ $баллы >= 100 ? "Вам доступен подарок" : "До подарка " ~ (100 - $баллы) ~ " баллов" }}
Короткая форма значение ?: запасное выведет значение, если оно не пустое, иначе запасное:
Здравствуйте, {{ first_name ?: "друг" }}!
Запасное значение для пустых данных
значение ?? запасное — если значения нет совсем (у контакта не указан телефон, переменная не заполнена), подставится запасное:
Телефон: {{ phone ?? "не указан" }}
Работа с текстом
| Оператор | Действие | Пример |
|---|---|---|
~ |
склеить текст | {{ first_name ~ " " ~ last_name }} |
contains |
содержит | {{ $ответ contains "да" ? "Отлично!" : "Жаль" }} |
starts with |
начинается с | {{ phone starts with "+7" ? "Россия" : "Другая страна" }} |
ends with |
заканчивается на | {{ email ends with "@gmail.com" }} |
in |
есть в списке | {{ $город in ["Москва", "Казань"] ? "Есть доставка" : "Самовывоз" }} |
not in |
нет в списке | {{ $тариф not in ["pro", "business"] }} |
contains, starts with и ends with различают большие и маленькие буквы. Чтобы не различать, приведите текст к одному регистру: {{ lower($ответ) contains "да" }}.
Функции внутри выражений
Функции можно вкладывать друг в друга и сочетать с операторами:
{{ capitalize(lower(var("Имя клиента"))) }}
{{ round(($цена + $доставка) * 0.9, 2) }}
{{ number_format(global("Курс (USD)") * $сумма, 2) }} ₽
Список функций — в справочнике.
Что нельзя
В выражениях нет циклов, присваиваний и обращения к внутренним данным платформы — только операторы и функции из справочника. Подробнее об ограничениях — в разделе Ошибки и ограничения.