Пользовательские поля формы
Пользовательские поля позволяют расширить стандартные формы. Такие поля могут быть и информационными и калькулируемыми, которые участвуют в формировании суммы заявки.
Пользовательские поля описываются в формате YAML. Хранятся они в файле /core/components/onebooking/extras/booking.extras.yaml
. Для примера там же лежит файл example.booking.extras.yaml
. Можете переименовать его, а можете создать новый по образцу. В файле подробно описан формат полей.
Для примера приведу описание поля «Количество человек» типа "select". Это поле затем можно добавить в форму заявки на бронирование, используя плейсхолдер с названием поля [[+persons_number]]
.
// Название поля persons_number: // Для вывода на сайте field: | <label class="labelform" for="persons_number">Количество человек</label> <select class="ob-extras-textarea form-control" name="persons_number" id="persons_number"> <option value="500">Один</option> <option value="1000" selected>Два</option> <option value="1500">Три</option> </select> // Название поля (используется в админке) label: Количество человек // Учитывать стоимость один раз или каждый день apply_once: 0 // Учитывать сумму в акциях или нет calc_after: 0 // Признак, что поле не информационное и его нужно учитывать в расчетах стоимости. calculate: 1 // Признак, что поле обязательное required: 1 // Тип поля (для интерфейса администратора) type: select (используется в админке) // Значение по-умолчанию default: 500 // Элементы списка в формате "стоимость : заголовок в списке" (используется в админке) items: 500: Один (500) 1000: Два (1000) 1500: Три (1500)
Добавленные поля сразу появляются в диалоге создания заявки на бронирование в интерфейсе администратора.
А для того, чтобы добавить поля в форму на сайте, нужно в чанке формы добавить соответствующие плейсхолдеры. Например, так
<form> ... <div class="form-group"> [[+city]] </div> <div class="form-group"> [[+select]] </div> <div class="form-group"> [[+radio]] </div> </form>
Таким образом можно делать любые формы. Надо только помнить об обязательных полях "object","start_date","end_date" и "number" (что, когда и сколько). В качестве примера можно использовать стандартную форму.
Для подключения своих форм добавлены системные настройки frontend_js и frontend_css для собственных файлов стилей и скриптов.