Работа с формами
Компонент Форма
Форма позволяет вывести некую информацию о некотором объекте (например, карточка клиента). Форма может иметь некоторые поля и кнопки выполнения операции (например, Сохранить).
Формы используются для создания сущностей (передан itemID=0), а также для редактирования параметров некой сущности (itemID>0).
Форма может содержать либо стандартную, либо кастомную разметку (в форму можно помещать другие компоненты, например таблицы, формы, файлы и т.д.).
Howto по формам можно посмотреть здесь -
howto по формам Falcon Space.
Настройка хранимых процедур для формы
Какие есть процедуры у формы:
Как создать форму по шагам
Для создания формы необходимо сделать следующее:
-
В меню "Компоненты" выбрать "формы". На странице управления формами нажать кнопку "Новая форма".
-
Настроить параметры формы
-
-
Создать хранимую процедуру getItem (для формы редактирования. Она получает данные для загрузки текущего состояния формы. Для формы добавления это не нужно делать).
-
Создать хранимую процедуру checkItem. Она вызывается для проверки полей формы перед сохранением. Если ее нет, то проверка не производится.
-
Создать хранимую процедуру saveItem. Она сохраняет в базе значения формы при нажатии на кнопку Сохранить.
Работа с внешним источником API в форме
Среди настроек формы есть 3 параметра подключения внешних источников (коды API запросов через запятую, для выполнения исходящих запросов при различных событиях формы):
- GetItem API - запускается перед GetItem процедурой (загрузка формы).
- SaveItem API - запускается перед SaveItem процедурой (нажали кнопку Сохранить).
- CheckField API - запускается перед CheckField процедурой (изменили поле).
Результат ответ запроса API передается в хранимую процедуру через параметр @parameters ExtendedDictionaryKey (в Key пишется код запроса).
Документация по запросам API
Решение проблем
Не получается корректно сохранить скрипт в форме
При использовании 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)
Страница-источник на сайте falconspace.ru
-
Начало работы
-
Основа Falcon Space
-
Руководства
-
Возможности
-
Коммуникация пользователей
-
Таблицы
-
Формы
Работа с формами Настройка полей формы Список типов полей формы GetItem - вывод данных формы CheckItem - процедура проверка введенных данных на форме SaveItem - процедура сохранения формы SaveField - сохранение одиночного поля на форме CheckItemFIeld - процедура реагирования на изменения поля dict - процедура для значений списковых полей формы Progress - процедура отображения статуса заполнения формы Как вывести форму во всплывающем окне рядом с кнопкой (popover) Загрузка формы по ссылке Как принимать в форму не 1 параметр (itemID), а несколько входящих параметров? data-param-p1 Как сделать модальную форму Как добавить коллбек после загрузки формы и после сохранения формы. Как показывать на форме прогресс заполнения (прогресс заполнения формы) Как сделать форму в виде мастера шагов Как сделать подтверждение действия в СМС (SMS) в форме Как установить поля в форме по умолчанию при загрузке Как показывать изменяющуюся информацию при изменении полей Формы. Как сделать в форме более 1 кнопки действий (несколько кнопок действий на форме) Как правильно обрабатывать цены (дробные числа) на форме Как передать в форму скрытый параметр Как в форме добавить примеры заполнения полей (example) Как сделать окно подтверждения действия формы Как выбрать значение списка через справочник в модальном окне Динамическое изменение itemID у формы в зависимости от других элементов страницы Как скрывать/показывать, обновлять область на странице при изменении поля формы Как добавить новый элемент, если в списке на форме его нет Как перезагрузить страницу после сохранения формы Как вывести списковые данные или таблицу внутри формы Как сделать зависимые поля в форме (Страна, Город) Как сделать кастомную HTML разметку для формы (jsRender) Как создать кастом форму с подтверждением действия по Email или SMS (JS метод) Установка фоновой панели для формы Как сделать задержку при сохранении формы (saveDelay) Подсказки-ограничители длины для полей в форме Как динамически изменять тип поля формы Как сохранить значение поля в браузере, чтобы каждый раз его не вбивать при загрузке (оставлять последнее сохраненное). Запоминание поля формы в браузере Как выводить разные данные на одной форме для разных ролей Как сделать форму с сохранением состояния Как сделать поля с анимацией значений Использование Google Recaptcha в формах Как обновить таблицу после сохранения формы в модальном окне Как указать произвольную маску для поля ввода в форме Кастом проверка полей формы через JS Как в выборе даты (datepicker) задать доступные даты Как создать форму для редактирования сущности Загрузка формы в выпадающем окне (dropdown) Добавление смайликов (emoji) в поля форм Как у формы сделать progress bar при загрузке формы Работа с датами в формах Показ количества символов рядом с полем в форме Кнопка очистки формы Reset Контроль заполнения ключевых форм на сайте Как сделать форму с простым подтверждением действия (confirm) Как поменять соотношение длины метки и поля Как при сохранении формы вывести сообщение printlog, а не alert Выпадающая панель в форме рядом с названием dropdownPanel
-
Поля формы
-
Лендинги
-
Дизайн, стилизация, юзабилити
-
Интеграции
-
Универсальный API
-
Каталоги
-
Навигация
-
Документы
-
Дополнительные компоненты
-
Продвижение, SEO
-
Системные моменты
-
Системное администрирование
-
HOWTO
-
Загрузка файлов, картинок
-
HOWTO SQL
-
HOWTO JS
-
HOWTO Верстка
-
Решение проблем
-
Советы по реализации