Перейти к содержанию

editTable

Общее описание

Класс editTable представляет собой компонент для создания и управления формами редактирования данных в административной панели. Основная роль класса заключается в построении интерфейса для просмотра, редактирования и сохранения записей из базы данных с поддержкой различных типов полей, валидации, группировки и пользовательских настроек.

Список методов (оглавление)

  • __construct() — инициализация формы редактирования
  • setTemplate() — установка HTML-шаблона формы
  • setTemplateControl() — настройка шаблонов элементов управления
  • setReadonly() — установка режима только для чтения
  • setReadonlyFields() — установка полей только для чтения
  • addReadonlyFields() — добавление полей только для чтения
  • clearReadonlyFields() — очистка полей только для чтения
  • addControl() — добавление нового элемента управления
  • addGroup() — добавление группы элементов
  • addButton() — добавление кнопки
  • addButtonSwitch() — добавление переключателя (switch)
  • addButtonCustom() — добавление произвольной кнопки
  • setSessFormField() — сохранение значения в служебных полях
  • setLeaveChecking() — настройка проверки изменений при уходе со страницы
  • setTable() — установка таблицы базы данных
  • setWidthLabels() — установка ширины меток полей
  • setData() — установка данных записи
  • render() — рендеринг формы с возвратом HTML
  • setSaveHandler() — установка обработчика сохранения
  • saveSuccess() — установка скрипта при успешном сохранении (устарело)
  • addSuccessScript() — добавление скрипта при успешном сохранении
  • addSuccessNotice() — добавление уведомления при успешном сохранении
  • setSuccessUrl() — установка URL для перехода после сохранения
  • addParams() — добавление параметров

Детальное описание методов

__construct()

Описание: Инициализация формы редактирования с установкой базовых параметров, ресурса и настроек доступа.
Параметры: - $name (string) — имя ресурса/формы

Пример:

$edit = new \editTable('mod_storages');


setTemplate()

Описание: Установка пользовательского HTML-шаблона для формы редактирования.
Сигнатура: public function setTemplate($html): self
Параметры: - $html (string) — HTML-код шаблона

Возвращает: $this

Пример:

$edit->setTemplate('<div id="custom_form">[default]</div>');


setTemplateControl()

Описание: Настройка произвольного шаблона для элемента управления определенного типа.
Сигнатура: public function setTemplateControl($type, $filename): self
Параметры: - $type (string) — тип элемента управления (например, 'xfile', 'date2') - $filename (string) — абсолютный путь к файлу шаблона

Возвращает: $this

Пример:

$edit->setTemplateControl('xfile', Theme::get("html-edit-files"));


setReadonly()

Описание: Установка формы в состояние "только для чтения".
Сигнатура: public function setReadonly(bool $is_readonly): void
Параметры: - $is_readonly (bool) — флаг режима только для чтения

Пример:

$edit->setReadonly(true);


setReadonlyFields()

Описание: Установка списка полей, которые должны быть в состоянии только для чтения (с предварительной очисткой).
Сигнатура: public function setReadonlyFields(array $fields): void
Параметры: - $fields (array) — массив имен полей

Пример:

$edit->setReadonlyFields(['name', 'code', 'status']);


addReadonlyFields()

Описание: Добавление полей в список полей только для чтения.
Сигнатура: public function addReadonlyFields(array $fields): void
Параметры: - $fields (array) — массив имен полей для добавления

Пример:

$edit->addReadonlyFields(['created_at', 'updated_at']);


clearReadonlyFields()

Описание: Очистка списка полей, которые должны быть в состоянии только для чтения.
Сигнатура: public function clearReadonlyFields(): void

Пример:

$edit->clearReadonlyFields();


addControl()

Описание: Добавление нового элемента управления (поля) к форме.
Сигнатура: public function addControl($name, $type, $in = "", $out = "", $default = "", $req = false): self
Параметры: - $name (string) — заголовок/имя поля - $type (string) — тип элемента управления (например, 'text', 'select', 'date') - $in (string|array) — атрибуты поля - $out (string) — внешний HTML - $default (string) — значение по умолчанию - $req (bool) — обязательное поле

Возвращает: $this

Пример:

$edit->addControl('Наименование', 'text', '', '', '', true);


addGroup()

Описание: Добавление группы элементов (сворачиваемый блок).
Сигнатура: public function addGroup($name, $collapsed = false): self
Параметры: - $name (string) — имя группы - $collapsed (bool) — свернута ли группа по умолчанию

Возвращает: $this

Пример:

$edit->addGroup('Основные данные', false);


addButton()

Описание: Добавление стандартной кнопки к форме.
Сигнатура: public function addButton($value, $action = ''): self
Параметры: - $value (string) — текст на кнопке - $action (string) — JavaScript-действие при клике

Возвращает: $this

Пример:

$edit->addButton('Сохранить', 'this.form.onsubmit();');


addButtonSwitch()

Описание: Создание кнопки-переключателя (switch) для полей с значениями Y/N.
Сигнатура: public function addButtonSwitch($field_name, $value): self
Параметры: - $field_name (string) — имя поля - $value (string) — текущее значение (Y или N)

Возвращает: $this

Пример:

$edit->addButtonSwitch('is_active', 'Y');


addButtonCustom()

Описание: Добавление произвольной кнопки с пользовательским HTML.
Сигнатура: public function addButtonCustom($html = ''): self
Параметры: - $html (string) — HTML-код кнопки

Возвращает: $this

Пример:

$edit->addButtonCustom('<button class="btn">Кнопка</button>');


setSessFormField()

Описание: Сохранение значения в служебных полях формы (сессия).
Сигнатура: public function setSessFormField($id, $value): self
Параметры: - $id (string) — идентификатор поля - $value (mixed) — значение

Возвращает: $this

Пример:

$edit->setSessFormField('maxWidth', 800);


setLeaveChecking()

Описание: Установка проверки изменений на форме при уходе со страницы.
Сигнатура: public function setLeaveChecking(bool $leave_checking): self
Параметры: - $leave_checking (bool) — включить проверку

Возвращает: $this

Пример:

$edit->setLeaveChecking(true);


setTable()

Описание: Установка таблицы базы данных для формы.
Сигнатура: public function setTable(string $table): self
Параметры: - $table (string) — имя таблицы

Возвращает: $this

Пример:

$edit->setTable('mod_storages_suppliers');


setWidthLabels()

Описание: Установка ширины для названий полей.
Сигнатура: public function setWidthLabels(string|int $width): self
Параметры: - $width (string|int) — ширина (например, '200px' или 200)

Возвращает: $this

Пример:

$edit->setWidthLabels(230);


setData()

Описание: Установка данных записи для редактирования.
Сигнатура: public function setData(array $record): self
Параметры: - $record (array) — ассоциативный массив данных

Возвращает: $this

Пример:

$edit->setData(['id' => 1, 'name' => 'Тест', 'status' => 'Y']);


render()

Описание: Рендеринг формы с возвратом HTML-кода.
Сигнатура: public function render(array $options = []): string
Параметры: - $options (array) — опции отображения

Возвращает: string — HTML-код формы

Пример:

echo $edit->render(['scroll_to_form' => true]);


setSaveHandler()

Описание: Установка обработчика сохранения через xajax.
Сигнатура: public function setSaveHandler(string $handler): self
Параметры: - $handler (string) — имя обработчика

Возвращает: $this

Пример:

$edit->setSaveHandler("saveShipmentStep1");


saveSuccess()

Описание: Установка скрипта при успешном сохранении (устарело, используйте addSuccessScript).
Сигнатура: public function saveSuccess(string $func): self
Параметры: - $func (string) — JavaScript-код

Возвращает: $this

Пример:

$edit->saveSuccess('alert("Сохранено");');


addSuccessScript()

Описание: Добавление скрипта при успешном сохранении.
Сигнатура: public function addSuccessScript(string $script): self
Параметры: - $script (string) — JavaScript-код

Возвращает: $this

Пример:

$edit->addSuccessScript('CoreUI.notice.create("Сохранено");');


addSuccessNotice()

Описание: Добавление уведомления при успешном сохранении.
Сигнатура: public function addSuccessNotice(string $text = null): self
Параметры: - $text (string) — текст уведомления

Возвращает: $this

Пример:

$edit->addSuccessNotice('Данные успешно обновлены');


setSuccessUrl()

Описание: Установка URL для перехода после успешного сохранения.
Сигнатура: public function setSuccessUrl(string $url): self
Параметры: - $url (string) — URL адрес

Возвращает: $this

Пример:

$edit->setSuccessUrl('index.php?module=list');


addParams()

Описание: Добавление параметров к форме.
Сигнатура: public function addParams($va, $value = ''): self
Параметры: - $va (string) — имя параметра - $value (string) — значение

Возвращает: $this

Пример:

$edit->addParams('field-name', '12345-abc');


Типичный пример использования класса целиком

<?php
// Подключение необходимых файлов
require_once("core2/inc/classes/class.edit.php");

// Создание формы редактирования поставщика
$edit = new \editTable('storages_suppliers');

// Настройка формы
$edit->setTable('mod_storages_suppliers')                    // Указываем таблицу БД
     ->setWidthLabels(200)                                   // Ширина меток полей
     ->setSuccessUrl('index.php?module=storages&suppliers')  // URL после сохранения
     ->addSuccessNotice('Поставщик успешно сохранен')        // Уведомление после сохранения
     ->addSuccessScript('console.log("Сохранено");')         // Скрипт после сохранения
     ->setSaveHandler("saveSupplierData");                   // Настройка метода сохранения

// $edit->setReadonly(true)  // Включает режим только для чтения

// Устанавливаем данные (если редактируем)
$edit->setData([
    'id'        => 123, 
    'name'      => 'ООО Тест',
    'inn'       => '1111111',
    'kpp'       => '222222',
    'address'   => 'г. Минск, уд. Революционная, д. 1',
    'is_active' => 'Y',
    'type'      => 'legal',
    'discount'  => 15,
]);          

// Добавление полей формы
$edit->addControl('Название компании',  $edit::TYPE_TEXT, '', '', '', true);      // Обязательное поле
$edit->addControl('ИНН',                $edit::TYPE_TEXT, '');
$edit->addControl('КПП',                $edit::TYPE_TEXT, '');
$edit->addControl('Юридический адрес',  $edit::TYPE_TEXTAREA, '');
$edit->addControl('Активен',            $edit::TYPE_SWITCH);                      // Переключатель да/нет
$edit->addControl('Тип поставщика',     $edit::TYPE_SELECT, '', '', '', false);   // Выпадающий список


// Настройка списка для поля select (пример)
$edit->selectSQL[0] = [
    '1' => 'Основной поставщик',
    '2' => 'Резервный поставщик',
    '3' => 'Тестовый поставщик'
];

// Добавление группы дополнительных настроек
$edit->addGroup('Дополнительные параметры', true);  // true - свернута по умолчанию
$edit->addControl('Скидка, %',   $edit::TYPE_NUMBER);
$edit->addControl('Комментарий', $edit::TYPE_TEXTAREA);

// Добавление кнопок
$edit->addButton('Отмена', 'index.php?module=storages&suppliers');


// Отображение формы
echo $edit->render();

Пример простого использования (минимальный вариант)

<?php
// Быстрая форма для добавления записи
$edit = new \editTable('users_index');
$edit->setTable('mod_users')
    ->setSaveHandler("saveUser");

$edit->setData([
    'id'    => 123, 
    'login' => 'admin',
    'email' => 'admin@example.com',
    'pass'  => '12345',
]);    

$edit->addControl('Логин',  $edit::TYPE_TEXT,     '', '', '', true);
$edit->addControl('Email',  $edit::TYPE_TEXT,     '', '', '', true);
$edit->addControl('Пароль', $edit::TYPE_PASSWORD, '', '', '', true);

echo $edit->render();