Перехват стандартного добавления в корзину

Модуль расширенного управления меню для битрикс

Май 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();
        }        
    }
);

← Переход к списку