Документация для разработчиков
Темная тема

Создание собственных закладок форм

Описание

Разберем создание собственных закладок для многостраничных форм в административном интерфейсе.

Для подключения собственных закладок нужно

  1. Реализовать обработчики закладки в виде класса или набора функций;
  2. Зарегистрировать событие посредством 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