Magento 2 Observer не работает над событием 'checkout_onepage_controller_success_action' - PullRequest
0 голосов
/ 18 февраля 2020

Я перепробовал много предложений, но у меня ничего не получается. Я пытаюсь прослушать событие 'checkout_onepage_controller_success_action'. Я пытаюсь установить статус заказа на «завершить» при оформлении заказа (сейчас я закомментировал эту часть).

Как вы можете видеть ниже (внутри метода execute), я пытаюсь распечатать закажите объект, затем выйдите. Но при тестировании ничего не происходит. Нет распечатки, нет сообщения об ошибке. Ничего ...

Перед тестированием я выполнил следующие команды: bin/magento setup:upgrade, bin/magento setup:di:compile, bin/magento cache:clean

Я также попытался прослушать событие sales_order_place_after. У меня тоже ничего нет ...

приложение / код / ​​[компания] / [модуль] /etc/frontend/events.xml

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="checkout_onepage_controller_success_action">
        <observer instance="[company]\[module]\Observer\CheckoutSuccessObserver" name="checkout_onepage_controller_success_action_observer"/>
    </event>
</config>

приложение / код / ​​[компания] / [модуль] /Observer/CheckoutSuccessObserver.php

<?php

namespace [company]\[module]\Observer;

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

/**
 * Class CheckoutSuccessObserver
 *
 * @package [company]\[module]\Observer
 */
class CheckoutSuccessObserver implements ObserverInterface
{

    /**
     * Execute observer
     *
     * @param \Magento\Framework\Event\Observer $observer
     * @return void
     */
    public function execute(Observer $observer) 
    {
        $order = $observer->getEvent()->getOrder();
        print_r($order); exit;

        //$order = $observer->getEvent()->getOrder();
        //$order_id = $order->getIncrementId();

        //$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
        //$order->setData('state', "complete");
        //$order->setStatus("complete");      

        //$history = $order->addStatusHistoryComment('Order was set to complete by our automation tool.', false);
        //$history->setIsCustomerNotified(null);

        //$order->save();
    }
}

1 Ответ

0 голосов
/ 19 февраля 2020

Ваш пример кода выглядит нормально. Вы включили свой пользовательский модуль? Проверьте это, используя bin/magento module:status [company]_[module] Попробуйте также очистить каталоги проекта: https://devdocs.magento.com/guides/v2.3/howdoi/php/php_clear-dirs.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...