Создание собственных закладок форм
Описание
Разберем создание собственных закладок для многостраничных форм в административном интерфейсе.
Для подключения собственных закладок нужно
- Реализовать обработчики закладки в виде класса или набора функций;
- Зарегистрировать событие посредством AddeventHandler или RegisterModuleDependencies.
Класс должен содержать следующие методы:
- Описательный метод OnInit(), возвращающий массив с наименованиями или callback-массивами остальных методов. Массив должен содержать следующие ключи:
- TABSET - идентификатор набора закладок;
- GetTabs - callback-массив вызова метода, описывающего закладки;
- ShowTab - callback-массив вызова метода, возвращающего HTML-код страницы формы по идентификатору закладки;
- Action - callback-массив вызова метода, обрабатывающего данные, полученные из формы;
- Check - callback-массив вызова метода, проверяющего данные, полученные из формы.
- Все методы, перечисленные в списке, возвращаемом OnInit()
- Любые дополнительные методы, используемые в вышеперечисленных.
Примерная структура класса, реализующего собственные закладки
<? class CCustomOETabs { function OnInit() { return array( "TABSET" => "YYY", "GetTabs" => array("CCustomOETabs", "GetTabs"), "ShowTab" => array("CCustomOETabs", "ShowTab"), "Action" => array("CCustomOETabs", "Action"), "Check" => array("CCustomOETabs", "Check"), ); } function Action($arArgs) { // Основные данные сохранены. Делаем тут действия. // Возвращаем True в случае успеха и False - в случае ошибки // В случае ошибки делаем так же $GLOBALS["APPLICATION"]-> ThrowException("Ошибка!!!", "ERROR"); } function Check($arArgs) { // Основные данные ещё не сохранялись. Делаем тут разные чеки. // Возвращаем True, если можно все схранять, иначе False // В случае False делаем так же $GLOBALS["APPLICATION"]-> ThrowException("Ошибка!!!", "ERROR"); } function GetTabs($arArgs) { // SORT - после какого стандартного таба вставлять. Не установлено - после последнего $arTabs = array( array("DIV" => "edit1", "TAB" => "Собственная закладка 1", "ICON" => "sale", "TITLE" => "Собственная закладка 1", "SORT" => 1), ); return $arTabs; } function ShowTab($divName, $arArgs, $bVarsFromForm) { if ($divName == "edit1") { ?> <tr> <td width="40%">Собственное поле 1:</td> <td width="60%"><input type="text" name="custom_field_1"></td> </tr> <? } } }
Все методы, кроме ShowTab() получают на вход массив аргументов, задаваемых при помощи конструктора класса CAdminTabEngine или при помощи метода CAdminTabEngine::SetArgs(). Формат массива, который должен возвращать метод GetTabs описан здесь.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024