setupDefaultRestrictions
public static function \Bitrix\Sale\Services\Base\RestrictionManager::setupDefaultRestrictions( RestrictableService $service );
Метод применяет для сервиса все дефолтные ограничения, которые должны быть применены при его добавлении. Т.е. если мы добавляем платёжную систему, которая работает только в рублях, то при вызове метода setupDefaultRestrictions к этой платежной системе добавится ограничение по валюте "Рубль". Метод статический.
Примечание: На текущий момент данный метод работает только с одним видом сервисов – с платёжными системами.
Параметры
Параметр | Описание | Версия |
---|---|---|
$service | Сервис, который нужно ограничить (например, платёжная система). Должен реализовывать интерфейс \Bitrix\Sale\Services\Base\RestrictableService . |
Менеджер ограничений RestrictionManager
и сервис $service
, который передаётся в метод этого менеджера, должны бать одного типа (в нашем случае в менеджер ограничений платёжных систем передаётся сервис платёжной системы).
Метод setupDefaultRestrictions вызывается для платёжной системы после добавления её в базу данных. Метод вызывается во всех местах, где происходит добавление платёжной системы (в публичной и административной частях сайта).
Примеры
public static function setupDefaultRestrictions(RestrictableService $service): Result { $result = new Result(); // Далее идёт получение коллекций ограничений, которые изначально прописаны для сервиса. Коллекция ограничений – это класс Bitrix\Sale\Services\Base\RestrictionInfoCollection $startupRestrictions = $service->getStartupRestrictions(); // Далее сторонние разработчики могут подписаться на событие применения стандартных ограничений, отследить по SERVICE_ID что это за сервис, а также убрать/добавить в коллекцию ограничений STARTUP_RESTRICTIONS_COLLECTION те ограничения, которые нужно в итоге применить к сервису. На текущий момент это применимо только для платёжных систем (new Event( moduleId: 'sale', type: static::ON_STARTUP_SERVICE_RESTRICTIONS_EVENT_NAME, [ 'STARTUP_RESTRICTIONS_COLLECTION' => $startupRestrictions, 'SERVICE_ID' => $service->getServiceId(), ] ))->send(); self::clearAlreadyUsedByServiceRestrictions($service->getserviceId(), $startupRestrictions); /** @var RestrictionInfo $restrictionInfo */ // Ниже – итоговый список ограничений. Каждое ограничение из коллекции применяется к платёжной системе foreach ($startupRestrictions as $restrictionInfo) { $applyResult = static::applyRestriction($service->getServiceId(), $restrictionInfo); $result->addErrors($applyResult->getErrors()); } // Ограничения от разработчиков должны приходить в виде класса Bitrix\Sale\Services\Base\RestrictionInfo. В этом же виде они хранятся в коллекции. return $result; }