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

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

Описание

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

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

  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-2023, «1С-Битрикс», 2023