Недокументированные события ядра D7 Битрикс

Заметка о событиях в ядре D7 Битрикс.

На днях работал с платежами в CRM Битрикс24. Была, небольшая на первый взгляд, задача дать возможность пользователям менять валюту в счетах. Пока не будем о том как удалось это решить, не об этом речь. Но после того, как стало возможным менять валюту в счетах Битрикса, появилась другая задача. В данные платежа (эта та настройка, где выбираем «способ оплаты») не попадал выбранный  код валюты: RUB, USD, BYR и т.д.

То есть, если ранее при создании счета код валюты был RUB, то он таким и останется. За платеж отвечает класс \Bitrix\Sale\Payment. В его методе обнаружился интересный метод создания событии до обновления и после обновления сущности.

До обновления:

То есть имя события генерируется динамически. За это отвечает метод Bitrix\Sale\Internals\Enity::getEntityEventName().

Вот этот метод:

То есть имя события зависит от имени класса. В моем случае, это класс \Bitrix\Sale\Payment. Название Bitrix отбрасывается и получается OnBeforeSalePaymentEntitySaved для события до сохранения сущности и

OnSalePaymentEntitySaved после сохранения.

Ну, хорошо. И что это дает?

Это значит, что даже не зная названия определенного события можно поэкспериментировать, основываясь на названии класса. Если конечно, класс относится в ядру D7.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *