M2: Почему Мой Наблюдатель Не Запускает Вызовы API


У меня есть наблюдатель, который настроен в моем модуле

Файл : app\code\MStack\Exchange\etc\frontend\events.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="sales_quote_address_collect_totals_after">
        <observer name="changeTaxTotal" instance="MStack\Exchange\Observer\ChangeTaxTotal"/>
    </event>
</config>

Файл : app\code\MStack\Exchange\Observer\ChangeTaxTotal.php

<?php
namespace MStack\Exchange\Observer;

use \Magento\Framework\Event\ObserverInterface;
use \Magento\Framework\Event\Observer;

class ChangeTaxTotal implements ObserverInterface
{
    public $additionalTaxAmt = 2;

    public function execute(Observer $observer)
    {
        /** @var Magento\Quote\Model\Quote\Address\Total */
        $total = $observer->getData('total');
        $total->addTotalAmount('tax', $this->additionalTaxAmt);
        return $this;
    }
}

Как вы можете видеть, я слушаю событие sales_quote_address_collect_totals_after. Я проверяю это со страницы корзины, и, очевидно, это событие запускается оттуда.

Я вижу, что мое событие прослушивается при загрузке страницы. Но он не прослушивает вызовы api, которые утверждаются Magento для вычисления итогов (например, если вы попытаетесь использовать: Оценка Доставка и налоги). Я могу указать URL-адреса, которые не увольняют моего наблюдателя.

Www.mydomain.com/index.php/rest/default/V1/guest-carts/e192be2e994b1228be16487655004adc/totals-information

Так почему же мой наблюдатель не слушает такой запрос API? Как я могу изменить свой код, чтобы он работал для запроса API?

Author: Rajeev K Tomy, 2017-02-10

1 answers

Вам необходимо дополнительно поместить ваш файл events.xml в папку etc/webapi_rest или переместить в корневую область etc/.

Файлы конфигурации, которые находятся на верхнем уровне каталога etc этого модуля , являются глобальными для этого компонента. Файлы конфигурации, размещенные в подкаталогах (adminhtml, интерфейс, webapi_rest, webapi_soap), применяются только к соответствующим функциональным области.

Http://devdocs.magento.com/guides/v2.1/extension-dev-guide/build/required-configuration-files.html

 2
Author: Max, 2017-02-10 11:16:10