Как создать и использовать хуки (Hooks) в October CMS?

Пользователь

от gage , в категории: PHP , год назад

Как создать и использовать хуки (Hooks) в October CMS?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от cierra , год назад

@gage 

В October CMS хуки (Hooks) позволяют вам расширять функциональность ядра или плагинов, добавляя свой собственный код до или после выполнения определенного события. Хуки могут использоваться для модификации данных, обработки событий и т.д.


Для того чтобы создать и использовать хуки в October CMS, выполните следующие шаги:


Шаг 1: Создайте класс хука.

  • Создайте класс, наследующийся от базового класса OctoberRainHalcyonExtendHook в вашем плагине.
  • Переопределите метод @hook, который будет содержать ваш код.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php namespace VendorYourPluginClasses;

use OctoberRainHalcyonExtendHook;

class YourHook extends Hook
{
    public function subscribeEvents()
    {
        return [
            'system.cli.extendCommand' => 'yourMethod',
            'model.afterSave' => 'anotherMethod',
        ];
    }

    public function yourMethod($command)
    {
        // Ваш код
    }

    public function anotherMethod($model)
    {
        // Ваш код
    }
}


Шаг 2: Зарегистрируйте хук.

  • В файле Plugin.php вашего плагина добавьте код для регистрации хука.
  • Метод register(), используемый для регистрации плагина, принимает аргументом массив, содержащий классы хуков.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use VendorYourPluginClassesYourHook;

class Plugin extends PluginBase
{
    //...
    public function register()
    {
        $this->extend(function ($manager) {
            $manager->registerBinding([
                YourHook::class,
            ]);
        });
    }
    //...
}


Шаг 3: Используйте хуки.

  • Вы можете использовать хуки для обработки событий и выполнения своего кода до или после них.
  • Хуки регистрируются как обычные методы класса, объявленные в классе хука.
  • Названия событий (event names) определяются базовыми классами ядра или плагинов October CMS.


Пример:

1
$controller->fireEvent('model.afterSave', [$model]);


В этом примере мы вызываем хук 'model.afterSave' и передаем ему модель в аргументах. Метод anotherMethod в классе хука будет вызван после выполнения события model.afterSave.


Таким образом, вы можете создавать и использовать хуки в October CMS для расширения функциональности ядра или плагинов по вашему усмотрению.

Пользователь

от abel , год назад

@gage 

Хуки (Hooks) в October CMS позволяют вам расширять функциональность системы и позволяют вам вмешаться в процесс обработки запросов.


Для создания хука вам нужно выполнить следующие действия:

  1. Создайте класс, который будет представлять ваш хук. Класс должен наследоваться от CmsClassesDispatcher. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
namespace VendorPluginClasses;

use CmsClassesDispatcher;

class MyHook extends Dispatcher
{
    public function exampleHook($params)
    {
        // Ваш код обработки хука
    }
}


  1. Зарегистрируйте ваш хук в файле Plugin.php вашего плагина:
1
2
3
4
5
6
public function register()
{
    // ...

    App::register(MyHook::class);
}


  1. Используйте ваш хук в коде, вызывая методы хука. Например:
1
2
$hook = new VendorPluginClassesMyHook;
$hook->exampleHook($params);


Вы можете использовать хуки в различных ситуациях, например, для модификации или фильтрации данных перед их сохранением, для расширения функциональности системы или для добавления функциональности в публичные или административные страницы.


Важно отметить, что October CMS имеет множество встроенных хуков, которые вы можете использовать без необходимости создания собственных. При необходимости можно посмотреть в документации на October CMS или обратиться к официальному сообществу за поддержкой.