API REST - отправка событий
У меня есть пользовательский модуль, и моя структура кода соответствует контакту службы.
Приложение/код/[Поставщик]/[Модуль]/Model/AccountManagement.php
Теперь у меня есть событие отправки в файле модели
$this->_eventManager->dispatch('vendor_register_success', $eventParams);
В соответствии со стандартом REST API и в соответствии с решением this я добавил событие в конкретный модуль, откуда оно взялось.
Приложение/код/[Поставщик]/[Модуль]/etc/webapi_rest/events.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="vendor_register_success">
<observer name="vendor_register_success" instance="[Vendor]\[Module]\Observer\VendorBrandRegister" />
</event>
</config>
И Мой наблюдатель выглядит так
Приложение/код/[Поставщик]/[Модуль]/Observer/VendorBrandRegister.php
public function execute(\Magento\Framework\Event\Observer $observer)
{
echo "In execute"; exit;
}
Но это событие не является отправкой.
Чего мне не хватает, потому что в соответствии с решением мне нужно добавить события в папку webapi_rest
в папку etc
.
2 answers
Попробуйте использовать приведенный ниже код для события отправки.
$this->_eventManager->dispatch('vendor_register_success', [$eventParams]);
Вместо
$this->_eventManager->dispatch('vendor_register_success', $eventParams);
В качестве второго параметра должен быть массив. Это может вам помочь.
Это можно сделать, определив events.xml
в папке webapi_rest
.
Vendor/magento/module-quote/etc/webapi_rest/events.xml
Magento делает это в модуле quote для отправки почты.
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_model_service_quote_submit_success">
<observer name="sendEmail" instance="Magento\Quote\Observer\Webapi\SubmitObserver" />
</event>
</config>
Ссылка 1 - От Винаи Коппа: https://twitter.com/VinaiKopp/status/810897855527485440
Ссылка 2