Интерфейсы 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)
Navigation
Добавление пунктов в верхнее меню.
- Метод:
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/и выносите повторяющиеся запросы в методы моделей.