Falcon Space - платформа для создания сайтов с личными кабинетами
Работа с формами
Компонент Форма

Способы вывода формы на странице
Форму можно вывести в следующих вариантах:
1. Просто сразу на странице в виде сниппета div с классом as-form
<div class="as-form" data-code="x1" data-itemid="0"></div>
2. Как ссылка на модальную форму. Подробнее про форму в модальном окне.
3. Как контекстное окно рядом с кнопкой (окно закрывается по нажатию на крестик). Подробнее про popover формы.
4. Как выпадающее окно рядом с кнопкой (окно закрывается по нажатию вне окна). Подробнее про dropdown формы.
5. Загрузка формы по ссылке в некий контейнер на странице. Подробнее про загрузку форм по ссылке.
Форма может содержать либо стандартную, либо кастомную разметку (в форму можно помещать другие компоненты, например таблицы, формы, файлы и т.д.).
Howto по формам можно посмотреть здесь - howto по формам Falcon Space.
Настройка хранимых процедур для формы
Какие есть процедуры у формы:
- GetItem - заполнение полей формы и изменение настроек формы.
- CheckItem - проверка полей формы перед сохранением.
- SaveItem - сохранение формы по кнопке.
- CheckItemField - вызывается при изменении поля формы (например, для проверки корректности его значения)
- SaveField - вызывается для одиночного сохранения поля (поменял поле, ушел с него и поле сразу сохранилось)
- dict - процедура выдает значения для списковых полей формы (комбики, галочки и т.д.)
- Progress - отображение полоски прогресса при заполнении полей формы.
Как создать форму по шагам
Для создания формы необходимо сделать следующее:
-
В меню "Компоненты" выбрать "формы". На странице управления формами нажать кнопку "Новая форма".
-
Настроить параметры формы
-
Создать хранимую процедуру getItem (для формы редактирования. Она получает данные для загрузки текущего состояния формы. Для формы добавления это не нужно делать).
-
Создать хранимую процедуру checkItem. Она вызывается для проверки полей формы перед сохранением. Если ее нет, то проверка не производится.
-
Создать хранимую процедуру saveItem. Она сохраняет в базе значения формы при нажатии на кнопку Сохранить.
Работа с внешним источником API в форме
Среди настроек формы есть 3 параметра подключения внешних источников (коды API запросов через запятую, для выполнения исходящих запросов при различных событиях формы):
- GetItem API - запускается перед GetItem процедурой (загрузка формы).
- SaveItem API - запускается перед SaveItem процедурой (нажали кнопку Сохранить).
- CheckField API - запускается перед CheckField процедурой (изменили поле).
Результат ответ запроса API передается в хранимую процедуру через параметр @parameters ExtendedDictionaryKey (в Key пишется код запроса).
Решение проблем
Не получается корректно сохранить скрипт в форме
При использовании script
при кастомной разметке формы возникает проблема вложенных тегов script. Поэтому не используйте для формы кастомную разметку в случае если планируется эту форму использовать для редактирования каких-либо скриптов (теги script, например счетчики).
Ошибка при начальной загрузке формы
fm_{code}_getItem - всегда должен возвращаться какой-то результат. Если ваша форма на добавление, то можете просто возвращать select 1.
Криво выводятся подписи для элементов формы
Используйте разметку bootstrap для скелета формы (классы row, col-md-X и т.д.). Для меток используйте тег label с классом as-form-cap.
Множественный вызов GetItem процедуры
Дело в том, что процедура GetItem вызывается не только при первичной загрузке формы, но и при выполнении значимых действий (инициализация объекта формы) - при сохранении, при отслеживании изменения поля или сохранения одиночного поля и т.д.
Если вам необходимо отследить первый инициализирующий запуск GetItem, то используйте параметр isMainLoadForm в @parameters.
Пример:
CREATE PROCEDURE [dbo].[fm_myForm_getItem]
@itemID nvarchar(256),
@username nvarchar(256),
@parameters ExtendedDictionaryParameter readonly
AS
BEGIN
declare @isMainLoadForm bit = (select try_cast(value2 as bit) from @parameters where [Key]='isMainLoadForm')
print @isMainLoadForm
END
Для первичной загрузки параметр будет равен 1, в других случаях 0.
Дополнительные материалы
- Как создать форму для редактирования сущности
- Как сделать кастомную HTML разметку для формы
- Как установить некоторые поля в форме по умолчанию при загрузке
- Как сделать модальную форму
- Как вывести форму во всплывающем окне рядом с кнопкой (popover)
- Как передать в форму скрытый параметр
- Загрузка формы по ссылке
- Формы с множественным входными данными (несколько data-itemID)
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта