Skip to content

Latest commit

 

History

History
28 lines (23 loc) · 1.6 KB

extend.md

File metadata and controls

28 lines (23 loc) · 1.6 KB

Расширение

С версии 0.5 появилась возможность добавления собственных расширений. Реализуется это с помощью обработчика события onAfterTwigTemplateEngineInited. Событие не привязано ни к одному из модулей, поэтому при регистрации события в качестве идентификатора модуля нужно указать пустую строку. В событие передается объект Twig\Environment, с которым можно сделать определенные манипуляции. Пример обработчика события, который зарегистрирует свое расширение:

use Bitrix\Main\Event;
use Bitrix\Main\EventResult;
use Bitrix\Main\EventManager;
use Twig\Environment;

$eventManager = EventManager::getInstance();
$eventManager->addEventHandler('', 'onAfterTwigTemplateEngineInited', ['EventClass', 'addTwigExtension']);

class EventClass
{
    public static function addTwigExtension(Event $event): EventResult
    {
        /* @var Environment $engine */
        $engine = $event->getParameter('engine');
        $engine->addExtension(new MySuperDuperExtension());
        return new EventResult(EventResult::SUCCESS, [$engine]);
    }
}

Здесь класс MySuperDuperExtension должен быть наследником класса Twig\Extension\AbstractExtension или имплементацией интерфейса Twig\Extension\GlobalsInterface.