PHPackages                             proklung/twig-extensions-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. proklung/twig-extensions-bundle

ActiveSymfony-bundle[Templating &amp; Views](/categories/templating)

proklung/twig-extensions-bundle
===============================

Custom twig extensions and functions for Twig.

1.6.7(4y ago)21261MITPHPPHP &gt;=7.3 || ^8.0

Since Apr 22Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ProklUng/twig.extensions.bundle)[ Packagist](https://packagist.org/packages/proklung/twig-extensions-bundle)[ RSS](/packages/proklung-twig-extensions-bundle/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (13)Versions (61)Used By (1)

Бандл с набором расширений для Twig
===================================

[](#бандл-с-набором-расширений-для-twig)

**INTERNAL**

Установка
---------

[](#установка)

`composer require proklung/twig-extensions-bundle`

Конфигурация
------------

[](#конфигурация)

Файл `local/configs/packages/twig_extension_pack.yaml`:

```
twig_extension_pack:
  # Путь к dev сборке Webpack
  webpack_build_dev_path: 'local/build/'
  # Путь к production сборке Webpack
  webpack_build_production_path: 'local/dist/'
  # Сервис кэшера (реализующий Symfony\Contracts\Cache\CacheInterface) для реализации работы директивы cache
  # (https://twig.symfony.com/doc/3.x/tags/cache.html)
  # Если null (~) - фича отключена
  cacher: 'cache.app'
  # Экспорт runtimes наружу (в Битрикс)
  runtimes_export: false
```

Расширения
----------

[](#расширения)

**render**

Доработанный вариант функции render из фреймворка.

Первый вариант - рендер по контроллеру.

```
{{ render(controller("Local\\ExampleSimpleController", { 'id': 3 })) }}
```

Второй вариант - рендер по роуту.

```
{{ render('/api/entrypoint/', {'headers' : { 'X-Requested-With': 'XMLHttpRequest'} }) }}
```

Нюанс: не будет работать без установленного кастомного бандла с Symfony роутером ([https://github.com/ProklUng/wp.symfony.router.bundle](%D1%8D%D1%82%D0%B8%D0%BC) или [https://github.com/ProklUng/BitrixSymfonyRouterBundle](%D1%8D%D1%82%D0%B8%D0%BC)).

**render\_service**

```
Рендер из сервиса.

{{ render_service('app.controller.user', 'detail', {'user': user}, {'eventDispatcher': 'event_dispatcher'}) }}
```

**renderController**

```
Рендер контроллера.

{{ renderController('Local\Buffering\Buffer::showBuffered', 'additional-styles') }}
```

**dump**

Стандартный твиговский dump.

**dump\_custom**

Красивый твиговский dump (на базе `Symfony\Component\VarDumper`).

**json\_decode**

json\_decode как твиговская функция.

**glob**

glob как твиговский фильтр.

```
{% for size, icon in 'img/icons/favicon-*.png'|glob %}

{% endfor %}

{% for css in 'node_modules/@fortawesome/fontawesome-free-webfonts/css/*.css'|glob(false) %}

{% endfor %}
```

**youtube**

```
{{ 'youtube_video_id'|youtube }} {# YouTube, размер по умолчанию (560x315) #}
{{ 'youtube_video_id'|youtube(640) }} {# YouTube, заданной ширины (640x315) #}
{{ 'youtube_video_id'|youtube(640, 480) }} {# YouTube с заданной шириной и высотой #}
{{ 'youtube_video_id'|youtube('100%') }} {# YouTube, fluid ширина (100% x 315px) #}

{% set content = 'Youtube video:http://youtu.be/video_id' %}
{{ content|youtubeBoxes|raw }} {# div с p и встроенное видео #}
```

### Прочее

[](#прочее)

- `encore_entry_link_tags` - путь к CSS entry Symfony Encore
- `encore_entry_script_tags` - путь к JS entry Symfony Encore
- `quote` - строку в кавычки
- `sortbyfield` - сортировка массива по полю
- `url` - url по роуту и его параметрам
- `absolute_url` - абсолютный (со схемой и хостом) по url
- `path` - путь по роуту и его параметрам
- `naturaljoin`
- `csrf_token` - проверка csrf токена приложения
- `include()` - включение php или html файла
- `truncate` - обрезка строки с сохранением html тэгов

Wordpress:

- `apply_filter` - apply\_filter.

### Битриксовые

[](#битриксовые)

Из [пакета](https://github.com/maximaster/tools.twig), оригинальная документация:

#### Переменные из Битрикс

[](#переменные-из-битрикс)

- `APPLICATION` - экземпляр класса \\CMain, который хранится в глобальной переменной `$APPLICATION`
- `USER` - экземпляр класса \\CUser, который хранится в глобальной переменной `$USER`
- `app` - экземпляр класса \\Bitrix\\Main\\Application, если библиотека работает в битриксе с d7
- `result` - массив $arResult, сформированный в компоненте. См. примечания по настройке `extract_result`
- `params` - массив arParams, содержащий параметры компонента
- `template` - экземпляр класса \\CBitrixComponentTemplate для данного шаблона
- `component` - экземпляр класса \\CBitrixComponent для текущего компонента. Следует учитывать, что это не тот класс, который определен в компоненте, а именно \\CBitrixComponent
- `templateFolder` - путь до директории текущего шаблона относительно DOCUMENT\_ROOT
- `parentTemplateFolder` - путь до директории шаблона родительского компонента, если используется комплексный компонент. Эта переменная не учитывает родство шаблонов при использовании, например, функции `extends` в twig
- `lang` - массив языкозависимых переменных текущего шаблона. Будет удалено в версии 1.1

#### Функции из Битрикс

[](#функции-из-битрикс)

- `showComponent()` - аналог `\CMain::IncludeComponent()`. Данная функция только подключает компонент, но не возвращает результат работы компонента. Если вызывать подключение компонента с помощью объекта `APPLICATION`, то twig пытается вывести возвращаемое этим методом значение, что приводит часто к появлению артефактов в шаблонах.
- `getMessage()` - синоним для функции `GetMessage()` или метода `\Bitrix\Main\Loc::getMessage()`, если проект работает с d7
- `bitrix_sessid_post()` и `bitrix_sessid_get()` - переменные для генерации подписи с ID сессии в формах, синонимы одноименных функций в битриксе
- `showNote()`, `showError()` и `showMessage()` - синонимы функций `ShowNote()`, `ShowError()` и `ShowMessage()`

#### Переменные из PHP

[](#переменные-из-php)

К сожалению, в Битрикс иногда сложно обойтись без использования суперглобальных переменных напрямую в шаблонах, поэтому все суперглобальные переменные из php пробрасываются в каждый шаблон и доступны по именам \_SERVER, \_GET, \_POST, \_REQUEST, \_SESSION, \_COOKIE, \_FILES, \_ENV и \_GLOBALS

### Дополнительные дела

[](#дополнительные-дела)

Если на проекте используется [пакет](https://github.com/ProklUng/tools.twig) с поддержкой твиговского движка в компонентах, то в экземпляр того Твига автоматически перебрасываются все зарегистрированные в контейнере `extensions` (то, что отмечено в конфигах тэгом `twig.extension`) и `runtimes` (тэг `twig.runtime`).

Также эта штука поддается использованию автономно, без контейнера.

Где-нибудь в `init.php` (для `extensions`; для `runtimes` класс обработчик - `Prokl\TwigExtensionsPackBundle\Services\Twig\TwigRuntimesBag`):

```
use Prokl\TwigExtensionsPackBundle\Services\Twig\TwigExtensionsBag;
use Bitrix\Main\EventManager;

$events = [new Local\TwigExtension, Local\FooExtension::class];
$handler = new TwigExtensionsBag($events);

$eventManager = EventManager::getInstance();
$eventManager->addEventHandler(
    '',
    'onAfterTwigTemplateEngineInited',
    [$handler, 'handle']
);
```

Если [пакет](https://github.com/ProklUng/tools.twig) не установлен, то соответствующие сервисы удаляется на стадии компиляции контейнера.

Изначальная конфигурация [пакета](https://github.com/ProklUng/tools.twig) имеет приоритет над прокидываемым снаружи.

###  Health Score

32

—

LowBetter than 71% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

60

Last Release

1727d ago

PHP version history (2 changes)1.0.0PHP &gt;=7.3

1.4.2PHP &gt;=7.3 || ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/9210c86ee6734e537eaf22c0f2fe7a965451e340e39e1aae2b74013f24c2660d?d=identicon)[gedovan](/maintainers/gedovan)

---

Top Contributors

[![ProklUng](https://avatars.githubusercontent.com/u/19857467?v=4)](https://github.com/ProklUng "ProklUng (66 commits)")

---

Tags

bitrix-symfonyphp7twig-extensionwordpress-symfony

### Embed Badge

![Health badge](/badges/proklung-twig-extensions-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/proklung-twig-extensions-bundle/health.svg)](https://phpackages.com/packages/proklung-twig-extensions-bundle)
```

###  Alternatives

[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M646](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.3k](/packages/contao-core-bundle)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M385](/packages/shopware-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
