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

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

Описание

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

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

  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
Наверх