Зачастую мы сталкиваемся с задачами бизнеса которые диктуют свои правила.
К примеру дабы не допустить возможность ошибки со стороны менеджера оформляющего заказ на сайте, вводятся кастомные ошибки уведомляющие его о том что одно или несколько полей были описаны не верно, как этого добиться?
В D7 существует следующий способ:
use Bitrix\Main\Event; use App\Events\Order; $eventManager = EventManager::getInstance(); $eventManager->addEventHandler('sale', 'OnSaleOrderBeforeSaved', [Order::class, 'BeforeOrderUpdate']);
Листинг класса Order
namespace App\Events; use \Bitrix\Main; class Order { public static function BeforeOrderUpdate(Main\Event $event, $values) { if (Main\Context::getCurrent()->getRequest()->isAdminSection()) { /** @var \Bitrix\Sale\Order $order */ $order = $event->getParameter("ENTITY"); $isNew = $event->getParameter("IS_NEW"); $oldFields = $event->getParameter("VALUES"); if ($oldFields['STATUS_ID']) { return self::returnResultError('Недостаточно прав для изменения статуса заказа.', 'SALE_EVENT_ON_BEFORE_ORDER_SAVED_ERROR'); } } } public static function returnResultError($message, $code = '') { return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, \Bitrix\Sale\ResultError::create(new \Bitrix\Main\Error($message, $code)) ); } }