Создание собственных закладок форм
Описание
Разберем создание собственных закладок для многостраничных форм в административном интерфейсе.
Для подключения собственных закладок нужно
- Реализовать обработчики закладки в виде класса или набора функций;
- Зарегистрировать событие посредством 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-2025, «1С-Битрикс», 2025