OnBeforeAdd
\Bitrix\Catalog\Model\EventResult функция-обработчик( \Bitrix\Catalog\Model\Event $event );
Событие OnBeforeAdd вызывается в начале метода \Bitrix\Catalog\Model\Product::add до проверки и подготовки полей товара. Обработчик может изменить данные операции или добавить ошибку и отменить добавление товара.
Параметры события
| Параметр | Тип | Описание |
|---|---|---|
| fields | array |
Поля товара, переданные в метод add() |
| external_fields | array |
Дополнительные поля, которые не передаются напрямую в ORM-таблицу товара |
| actions | array |
Действия, которые модель должна выполнить после добавления товара |
Возвращаемое значение
Верните объект \Bitrix\Catalog\Model\EventResult. Методы modifyFields(), modifyExternalFields() и modifyActions() изменяют соответствующие данные операции. Методы unsetFields(), unsetExternalFields() и unsetActions() удаляют данные. Метод addError() добавляет ошибку и отменяет добавление товара.
Метод объединяет изменения от всех обработчиков, а затем проверяет ошибки. Измененные поля проходят штатную подготовку и проверку модели.
Пример
Обработчик задает значение поля VAT_INCLUDED, если оно не передано при добавлении товара.
<?php
use Bitrix\Catalog\Model\Event;
use Bitrix\Catalog\Model\EventResult;
use Bitrix\Catalog\ProductTable;
use Bitrix\Main\EventManager;
EventManager::getInstance()->addEventHandler(
'catalog',
'Bitrix\Catalog\Model\Product::OnBeforeAdd',
static function (Event $event): EventResult
{
$fields = $event->getParameter('fields');
$result = new EventResult();
if (!array_key_exists('VAT_INCLUDED', $fields))
{
$result->modifyFields([
'VAT_INCLUDED' => ProductTable::STATUS_NO,
]);
}
return $result;
}
);
Продолжить изучение
© «Битрикс», 2001-2026, «1С-Битрикс», 2026