Май 20, 2022
Теги: События, Модули grain, Интеграция с iiko
Перехват стандартного добавления в корзину и замена нестандартным в компонентах каталога битрикс. Для модуля Интеграция с iiko.
Возвращает массив json аналогичный стандартному, но по наличию ключей "productId", "basketId", "quantity" можно определить, что отработал данный код, а не стандартный.
<?php
use \Bitrix\Main\Loader;
use \Bitrix\Main\Application;
use \Bitrix\Main\Web\Json;
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'main',
'OnProlog',
function()
{
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
if(($request->get('action')=='ADD2BASKET') && !!$request->get('id'))
{
$errors = array();
$return = array();
if (!Loader::includeModule('grain.iiko'))
$errors[] = "grain.iiko module not installed";
elseif(($productId=intval($request->get('id')))<=0)
$errors[] = "Product id not specified";
if(!$errors)
{
$return['productId'] = $productId;
$quantity = 1;
$res=\Grain\Iiko\Basket::add($productId,$quantity);
if($res['success'])
{
$return['productId'] = $productId;
$return['basketId'] = $res['basketId'];
$return['quantity'] = $res['quantity'];
}
else
{
$errors = $res['errors'];
}
}
if($errors)
{
$return['STATUS'] = 'ERR';
$return['MESSAGE'] = implode("\n",$errors);
}
else
{
$return['STATUS'] = 'OK';
$return['MESSAGE'] = "Товар успешно добавлен в корзину2";
}
$GLOBALS['APPLICATION']->RestartBuffer();
echo Json::encode($return);
die();
}
}
);