PHPackages                             proklung/bitrix-tools-pack-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. [Utility &amp; Helpers](/categories/utility)
4. /
5. proklung/bitrix-tools-pack-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

proklung/bitrix-tools-pack-bundle
=================================

Ordinary tools pack for Symfony+Bitrix.

1.8.2(4y ago)24MITPHPPHP &gt;=7.3 | 8.0

Since May 19Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ProklUng/bitrix.tools.pack.bundle)[ Packagist](https://packagist.org/packages/proklung/bitrix-tools-pack-bundle)[ RSS](/packages/proklung-bitrix-tools-pack-bundle/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (10)Dependencies (8)Versions (61)Used By (0)

Бандл ординарных инструментов для Bitrix+Symfony
================================================

[](#бандл-ординарных-инструментов-для-bitrixsymfony)

Цель: борьба с копипастой всякой мелочи между проектами. Содержит в основном мусорный legacy код, доставшийся в наследство от предыдущих поколений, но прижившийся.

***INTERNAL***

\##Установка

composer.json:

```
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/proklung/bitrix-tools-pack-bundle"
        }
    ]
```

```
composer require proklung/bitrix-tools-pack-bundle
```

Фасады
------

[](#фасады)

- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\Container` - Экземпляр сервис-контейнера
- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\Application` - $APPLICATION
- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\ApplicationD7` - `Bitrix\Main\Application`
- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\CMain` - `CMain`
- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\CUser` - `CUser`
- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\CUser` - `CFile`
- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\EventManager` - `Bitrix\Main\EventManager`
- `Prokl\BitrixOrdinaryToolsBundle\Services\Facades\EventMail` - `Bitrix\Main\Mail\Event`

Логгеры
-------

[](#логгеры)

- `Prokl\BitrixOrdinaryToolsBundle\Services\Logger\EventLogLogger` - monolog-логгер для записи логов в журнал событий /bitrix/admin/event\_log.php?lang=ru.

Конфигурация Monolog Bundle:

```
monolog:
  handlers:
    myHandler:
      type: service
      id:  Prokl\BitrixOrdinaryToolsBundle\Services\Logger\EventLogLogger
      level: error
```

Использование:

```
        use Monolog\Logger;
        /** @var Logger $logger */
        $logger = container()->get('public_logger');
        $logger->error(
            'Testing',
            ['context' => 'OK', 'MODULE_ID' => 'My module', 'ITEM_ID' => get_class($this)]
        );
```

Использование битриксовых почтовых событий и их шаблонов
--------------------------------------------------------

[](#использование-битриксовых-почтовых-событий-и-их-шаблонов)

```
        use Prokl\BitrixOrdinaryToolsBundle\Services\Email\EventBridge\Sender\BitrixMailEventSender;

        /** @var BitrixMailEventSender $bitrixEventHandler */
        $bitrixEventHandler = container()->get('notifier_bitrix_event_sender.mail');

        // Массив, идентичный с параметром fields при отправке Битриксом сообщений
        // См. https://dev.1c-bitrix.ru/api_help/main/reference/cevent/send.php
        $arFields = ['NAME' => 'testing email', 'EMAIL' => 'recipitient@gmail.com'];

        // Будет оправлено сообщение в канал email и сделана запись в таблице b_event.
        $bitrixEventHandler->send('CODE_MAIL_EVENT', $arFields);
```

Ошибки отправки не глушатся. Если что-то пойдет не так, то выбросится исключение.

### Отправка битриксового события согласно channel\_policy

[](#отправка-битриксового-события-согласно-channel_policy)

При условии `channel_policy` в конфиге `framework.yaml`:

```
                'channel_policy':
                    medium:  ['email', 'chat/telegram'],
```

```
        use Prokl\BitrixOrdinaryToolsBundle\Services\Email\EventBridge\Sender\BitrixPolicySender;
        use Symfony\Component\Notifier\Notification\Notification;;

        /** @var BitrixPolicySender $bitrixEventHandler */
        $bitrixEventHandler = container()->get('notifier_bitrix_event_sender.policy');

        // Массив, идентичный с параметром fields при отправке Битриксом сообщений
        // См. https://dev.1c-bitrix.ru/api_help/main/reference/cevent/send.php
        $arFields = ['NAME' => 'testing email', 'EMAIL' => 'recipitient@gmail.com'];

        // Будет оправлено сообщение в канал email и сделана запись в таблице b_event.
        $bitrixEventHandler->send('CODE_MAIL_EVENT', $arFields, Notification::IMPORTANCE_MEDIUM);
```

### Использование битриксовых SMS событий и их шаблонов

[](#использование-битриксовых-sms-событий-и-их-шаблонов)

```
        use Prokl\BitrixOrdinaryToolsBundle\Services\Email\EventBridge\Sender\BitrixSmsSender;

        /** @var BitrixSmsSender $bitrixEventHandler */
        $bitrixEventHandler = container()->get('notifier_bitrix_event_sender.sms');
        // Массив, идентичный с параметром fields при отправке Битриксом сообщений
        $arFields = [
                'SENDER' => 'test', 'RECEIVER' => '+7926111111',
                'USER_PHONE' => '+7926111111', 'CODE' => '123'
        ];

        // Будет оправлено SMS и сделана запись в таблице b_event.
        $bitrixEventHandler->send('SMS_USER_RESTORE_PASSWORD', $arFields);
```

Ошибки отправки глушатся. Если что-то с доставкой SMS пойдет не так, то будет тихо, но в таблице `b_event`появится запись с признаком неудачи и текстом ошибки.

### Отправка битриксовых почтовых шаблонов в Телеграм

[](#отправка-битриксовых-почтовых-шаблонов-в-телеграм)

```
        use Prokl\BitrixOrdinaryToolsBundle\Services\Email\EventBridge\Sender\BitrixTelegramEventSender;

        /** @var BitrixTelegramEventSender $bitrixEventHandler */
        $bitrixEventHandler = container()->get('notifier_bitrix_event_sender.telegram');

        $arFields = ['CODE' => '2222', 'LINK' => 'http://site.loc/'];

        $bitrixEventHandler->send('TEST_EVENT', $arFields);
```

Должен быть установлен `symfony/telegram-notifier` и зарегистрирован транспорт `telegram`.

Нюанс:

- Telegram плохо переваривает html (даже в режиме `parse_mode = html`). Посему под капотом html шаблона превращается в markdown разметку.

### Отправка сообщений о фатальных ошибках на проекте согласно channel-policy нотификатора

[](#отправка-сообщений-о-фатальных-ошибках-на-проекте-согласно-channel-policy-нотификатора)

Symfony Notifier должен быть сконфигурирован в `framework.yaml`.

`/bitrix/.settings.php`:

Работает при условии установки [бандла](https://github.com/ProklUng/core.framework.extension.bundle).

```
use Symfony\Component\Notifier\Notification\Notification;

return [
    'exception_handling' =>
        array(
            'value' =>
                array(
                    'debug' => env('DEBUG', false),
                    'handled_errors_types' => 4437,
                    'exception_errors_types' => 4437,
                    'ignore_silence' => false,
                    'assertion_throws_exception' => true,
                    'assertion_error_type' => 256,
                    'log' => array (
                        'class_name' => \Prokl\BitrixOrdinaryToolsBundle\Services\ErrorHandler\ErrorHandler::class,
                        'required_file' => 'vendor/proklung/bitrix-tools-pack-bundle/Services/ErrorHandler/ErrorHandler/ErrorHandler.php',
                        'settings' => array (
                            'types' => [
                                \Bitrix\Main\Diag\ExceptionHandlerLog::UNCAUGHT_EXCEPTION,
                                \Bitrix\Main\Diag\ExceptionHandlerLog::IGNORED_ERROR,
                                \Bitrix\Main\Diag\ExceptionHandlerLog::FATAL,
                            ],
                            // Получатель почты; перебивает параметры родительского модуля
                            'recipient' => 'email@gmail.com',
                            // Или какой-нибудь иной способ различения dev/prod среды
                            // По умолчанию - dev
                            'env' => env('DEBUG', false) ? 'dev' : 'prod',
                            // В каком окружении работать. По умолчанию - prod.
                            'allowed_env' => ['dev', 'prod'],
                            // Уровень важности согласно channel_policy (см. документацию к модулю proklung.notifier)
                            // По умолчанию - urgent
                            'importancy' => Notification::IMPORTANCE_URGENT,
                        ),
                    ),
                ),
            'readonly' => false,
        ),
];
```

#### Нюансы

[](#нюансы)

1. Сообщение об ошибке рассылается всего один раз (иначе чревато флудом). Каждые сутки таблица с информацией об отправленных уведомлениях очищается посредством агента. Процесс начинается по новой.

### Транспорт для Symfony Messenger посредством Битрикс D7

[](#транспорт-для-symfony-messenger-посредством-битрикс-d7)

Форкнуто из [модуля](https://github.com/bsidev/bitrix-queue).

`framework.yaml`:

```
  messenger:
    enabled: true
    transports:
      async: "%env(MESSENGER_TRANSPORT_DSN)%"
      bitrix: 'bitrix://default?queue_name=messages'
    routing:
      'Local\Services\Messanger\SmsNotification': bitrix
```

Consume:

```
php bin/console messenger:consume bitrix
```

### Прогреватели кэша

[](#прогреватели-кэша)

Для команды `php bin/console cache:warmup`

- ***RouterCacheWarm*** - прогрев кэша роутера (если таковой присутствует).
- ***BitrixCacheWarmer*** - прогрев кэша статических страниц по списку.

Список определяется переменной контейнера `warming_pages` в корневом проекте:

```
parameters:
  warming_pages:
    - '/'
    - '/news/'
```

Если такой переменной нет, то прогревается только главная (`/`) страница.

Консольные команды
------------------

[](#консольные-команды)

1. Проверка - отправляется электронная почта или нет

```
php bin/console bitrix:check-send-email
```

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

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

1724d ago

PHP version history (2 changes)1.0.0PHP &gt;=7.1 | 8.0

1.5.4PHP &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 (67 commits)")

---

Tags

bitrixbitrix-symfonysymfony-bundle

### Embed Badge

![Health badge](/badges/proklung-bitrix-tools-pack-bundle/health.svg)

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

###  Alternatives

[symfony/maker-bundle

Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.

3.4k111.1M568](/packages/symfony-maker-bundle)[symplify/monorepo-builder

Not only Composer tools to build a Monorepo.

5205.3M82](/packages/symplify-monorepo-builder)[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)[flarum/core

Delightfully simple forum software.

211.3M1.9k](/packages/flarum-core)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

7310.3k29](/packages/open-dxp-opendxp)[netgen/layouts-core

Netgen Layouts enables you to build and manage complex web pages in a simpler way and with less coding. This is the core of Netgen Layouts, its heart and soul.

3689.4k10](/packages/netgen-layouts-core)

PHPackages © 2026

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