Добрый день.
Не вызывается обработчик события, зарегистрированный в своем модуле в файле ../install/index.php
RegisterModuleDependences('sale', 'OnSaleOrderSaved', $this->MODULE_ID, '\\Yolo\\Bonus\\EventHandler', 'myFunction');
тут все ок, он зарегистрировался, я так уже с другими делал)
Теперь в файле ../lib/Eventhandler.php
<?php
namespace Yolo\Bonus;
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
$module_id = "yolo.bonus";
\CModule::IncludeModule('main');
\CModule::IncludeModule('sale');
\CModule::IncludeModule($module_id);
use Bitrix\Main;
use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Application;
use Bitrix\Main\Type\DateTime;
use Yolo\Bonus;
use Yolo\Bonus\Core;
use Bitrix\Sale;
use Bitrix\Sale\Order;
use Bitrix\Sale\Basket;
use Bitrix\Sale\Delivery;
use Bitrix\Sale\PaySystem;
class EventHandler{
public function OnSaleStatusOrder($order_id, $status_val){
// ...
}
public function myFunction(\Bitrix\Main\Event $event)
{
/** @var Order $order */
$order = $event->getParameter("ENTITY");
$oldValues = $event->getParameter("VALUES");
$isNew = $event->getParameter("IS_NEW");
if ($isNew)
{
$sum = $order->getPrice();
// . . .
}
}
}
?>
В итоге выходит ошибка :
Argument 1 passed to Yolo\Bonus\EventHandler::myFunction() must be an instance of Bitrix\Main\Event, instance of Bitrix\Sale\Order given (0)
Я так понимаю, что в функцию передается объект Bitrix\Sale\Order а не Bitrix\Main\Event
Я уже подключил все что можно, и все равно не понимаю в чем дело.
На самом деле я только только начал писать модуль и возможно много чего не понимаю еще, но вроде все было логично до этого момента.
В документации показано что должен передаваться Bitrix\Main\Event, а по факту передается Bitrix\Sale\Order...
Подскажите пожалуйста.