Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Существует два способа расширения MaidBox:
- 1) Создать Symfony Bundle.
- 2) Создать MaidBox Module.
- ===
- Symfony bundle
- ===
- Подробнее: https://symfony.com/doc/5.3/bundles.html
- ===
- MaidBox Module
- ===
- Для расширения возможностей MaidBox нужно создать каталог с названием модуля в каталоге src/, структура должна быть следующая:
- Controller - контроллеры,
- Service - сервисы,
- EventListener - слушатели событий,
- Entity - модели,
- Repository - репозитории,
- Util/Utils/Lib/Library - утилиты/библиотека,
- Module.php - специальный файл для управления модулем.
- Module.php должен иметь следующее содержимое.
- <?php
- namespace MaidBox\Название_Модуля;
- use MaidBox\ModulesManager\Service\AbstractModule;
- class Module extends AbstractModule {
- }
- ===
- MaidBox Module \ EventListener
- ===
- EventListener автоматически определяется, если имеет одно из следующих названий:
- RequestListener
- ControllerListener
- ControllerArgumentsListener
- ViewListener
- ResponseListener
- FinishRequestListener
- TerminateListener
- ExceptionListener
- В Module.php допускается возможность установить общий приоритет EventListener с помощью переменной $defaultEventPriority.
- <?php
- namespace MaidBox\Название_Модуля;
- use MaidBox\ModulesManager\Service\AbstractModule;
- class Module extends AbstractModule {
- protected $defaultEventPriority = 1;
- }
- В том случае, если каждый EventListener должен иметь свой собственный приоритет, нужно переопределить метод enableEventListeners.
- <?php
- namespace MaidBox\Название_Модуля;
- use MaidBox\ModulesManager\Service\AbstractModule;
- use MaidBox\ModulesManager\Util\Config\ServicesYaml;
- class Module extends AbstractModule {
- // Метод активирует слушатели событий находящиеся в каталоге EventListener модуля.
- public function enableEventListeners(bool $cacheClear = true) {
- ServicesYaml::installEventListener($this, 'название EventListener', 'приоритет', 'название Event (не обязательно, определяется автоматически по названию EventListener');
- ServicesYaml::installEventListener($this, 'название EventListener2', 'приоритет', 'название Event (не обязательно, определяется автоматически по названию EventListener2')
- if($cacheClear == true) {
- $this->cache->clear();
- }
- }
- }
- ===
- MaidBox Module \ Config
- ===
- Конфигурация модуля в файлах.
- Класс Module имеет метод getConfig(), который возвращает конфигурацию из каталога /src/НазваниеМодуля/Resources/config или /config/maid_box/название_модуля, файл конфигурации должен называться default и иметь один из трёх допустимых форматов: php, yaml, ini. В том случае, если пользователь способен изменять конфигурацию, нужно использовать методы, которые создают/изменяют файл custom.php.
- setConfig(array $config) - Метод для установки конфигурации с записью в файл.
- setConfigSetting($setting, $value) - Метод для установки отдельной опции конфигурации с записью в файл.
- setConfigSettings(array $settings) - Метод для установки нескольких опций конфигурации с записью в файл.
- Конфигурация модуля в файлах и базе данных.
- Вы так же имеете возможность хранить конфигурацию модуля в базе данных, для этого нужно использовать сервис Config модуля Config, который имеет следующие методы.
- getAll() - Получить конфигурацию всех модулей.
- getOne($module, $setting) - Получить одну запись из таблицы конфигурации.
- get($module = false, $setting = false) - Получить запись или несколько записей из таблицы конфигурации.
- add($module, $setting, $value = null, $flush = true) - Добавить одну опцию конфигурации.
- addMany($module, array $settings) - Добавить несколько опций конфигурации.
- set($module, $setting, $value, $flushForAdd = true) - Установить значение одной опции конфигурации.
- setMany($module, array $settings) - Установить значение нескольких опций конфигурации.
- deleteAll() - Удаление всей конфигурации.
- delete($module = false, $setting = false) - Удаление конфигурации.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement