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

Интерфейсы Core2

В Core2 часть расширяемого поведения модуля задается через интерфейсы. Если контроллер/класс модуля реализует интерфейс, ядро вызывает соответствующий метод в нужной точке жизненного цикла.

Где находятся

Системные интерфейсы расположены в core2/inc/Interfaces.

Список и назначение

Delete

Кастомное удаление записей в стандартных таблицах.

  • Метод: action_delete($resource_name, $id)
  • Возврат:
  • true — удаление выполнено вручную,
  • false — использовать стандартную процедуру,
  • array — удаление успешно, но с кастомным сообщением/редиректом.

Switches

Кастомная логика переключателей (switch/checkbox) в таблицах.

  • Метод: action_switch(string $resource_name, string $field, string $id, string $value)

File

Перехват отдачи файлов модуля.

  • Метод: action_filehandler($context, $table, int $id)

Добавление пунктов в верхнее меню.

  • Метод: navigationItems(\Core2\Navigation $nav)

TopCss

Подключение глобальных CSS модуля.

  • Метод: topCss(): array

TopJs

Подключение глобальных JS модуля.

  • Метод: topJs(): array

Event

Генерация модульных событий (в т.ч. для механизмов подписки/SSE).

  • Методы:
  • check(): bool — нужно ли генерировать событие,
  • dispatch() — формирование данных события.

Subscribe

Подписка модуля на события других модулей.

  • Метод: listen($module_id, $event, $data)

RestController

Контракт для отдельных REST-контроллеров.

  • Методы:
  • setVersion($version)
  • setResource($resource)
  • setQuery($query)
  • setBody($body)
  • dispatch()

Практика

  • Реализуйте только те интерфейсы, которые реально нужны модулю.
  • Внутри обработчиков держите логику в сервисах/моделях, а не в контроллере.
  • Для операций с БД используйте модели из Model/ и выносите повторяющиеся запросы в методы моделей.