Декабрь 22, 2018
Теги: Магазин
Кастомизация компонента "bitrix:sale.order.ajax" - наследование функций, изменение логики.
Наследование класса компонента:
Если нужно выполнить какой-то код при создании заказа, не меняя логику основного компонента:
Установка изначального значения свойства заказа по символьному коду свойства в процедуре заказа (в данном случае мы устанавливаем значение "Y" свойству с кодом "RESERVE_FLAG", это можно было бы сделать и в настройках свойства, но оно может устанавливаться по условию или быть вычисляемым):
\Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible(
'sale',
'OnSaleComponentOrderProperties',
'SaleOrderEvents::fillMyProperty'
);
class = SaleOrderEvents
{
function fillMyProperty(&$arUserResult, $request, &$arParams, &$arResult)
{
$registry = \Bitrix\Sale\Registry::getInstance(\Bitrix\Sale\Registry::REGISTRY_TYPE_ORDER);
$orderClassName = $registry->getOrderClassName();
$order = $orderClassName::create(\Bitrix\Main\Application::getInstance()->getContext()->getSite());
$propertyCollection = $order->getPropertyCollection();
foreach ($propertyCollection as $property)
{
if (!$property->isUtil())
continue;
$arProperty = $property->getProperty();
if($arProperty['CODE']!="RESERVE_FLAG")
continue;
$arUserResult["ORDER_PROP"][$arProperty['ID']] = 'Y';
break;
}
}
}