Создание наблюдателя для размещения заказа на продажу после


Я создал 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="payment_method_assign_data">
        <observer name="sample_payment_gateway_data_assign" instance="Magento\SamplePaymentGateway\Observer\DataAssignObserver" />
    </event>
    <event name="sales_order_place_after">
        <observer name="process_gateway_redirect" instance="Magento\SamplePaymentGateway\Observer\ProcessGatewayRedirect" />
    </event>
</config>

Класс наблюдателя выглядит следующим образом:

<?php
/**
 * Copyright © 2016 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\SamplePaymentGateway\Observer;

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

class ProcessGatewayRedirect extends ObserverInterface
{
    /**
     * @param Observer $observer
     * @return void
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    { 
        die('order');
        $orderId = $observer->getEvent()->getOrderIds();
        $base_url = $this->_storeManager->getStore()->getBaseUrl();
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $order = $objectManager->create('\Magento\Sales\Model\Order') ->load($orderId[0]);
        $payment = $order->getPayment();


        $method = $payment->getMethodInstance();
        $methodTitle = $method->getTitle();

        $order_data= $order->getData();
        $status = $this->checkoutSession->getLastOrderStatus();

        $increment_id = $order_data['increment_id'];
        $redirect = $objectManager->get('\Magento\Framework\App\Response\Http');
        $redirect->setRedirect($base_url.'custompayment/index/redirect/id/'.$increment_id.'');
        return;

    }
}

Когда я запускаю команду php bin/magento setup:di:compile в терминале, я получаю следующую фатальную ошибку. Он исчезает, когда я комментирую весь код в классе observer. Я ничего не понимаю из того, что он говорит. Я застрял с этим уже неделю. Пожалуйста, помогите мне.

Fatal error:  Class Magento\SamplePaymentGateway\Observer\ProcessGatewayRedirect cannot extend from interface Magento\Framework\Event\ObserverInterface in /var/www/html/m4/app/code/Magento/SamplePaymentGateway/Observer/ProcessGatewayRedirect.php on line 39

PHP Stack trace:
PHP   1. {main}() /var/www/html/m4/bin/magento:0
PHP   2. Magento\Framework\Console\Cli->run() /var/www/html/m4/bin/magento:23
PHP   3. Magento\Framework\Console\Cli->doRun() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Application.php:126
PHP   4. Magento\Framework\Console\Cli->doRun() /var/www/html/m4/vendor/magento/framework/Console/Cli.php:96
PHP   5. Magento\Framework\Console\Cli->doRunCommand() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Application.php:195
PHP   6. Magento\Setup\Console\Command\DiCompileCommand->run() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Application.php:874
PHP   7. Magento\Setup\Console\Command\DiCompileCommand->execute() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
PHP   8. Magento\Setup\Module\Di\App\Task\Manager->process() /var/www/html/m4/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php:187
PHP   9. Magento\Setup\Module\Di\App\Task\Operation\RepositoryGenerator->doOperation() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/App/Task/Manager.php:56
PHP  10. Magento\Setup\Module\Di\Code\Reader\ClassesScanner->getList() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/App/Task/Operation/RepositoryGenerator.php:61
PHP  11. class_exists() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/Code/Reader/ClassesScanner.php:69
PHP  12. spl_autoload_call() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/Code/Reader/ClassesScanner.php:69
PHP  13. Composer\Autoload\ClassLoader->loadClass() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/Code/Reader/ClassesScanner.php:69
PHP  14. Composer\Autoload\includeFile() /var/www/html/m4/vendor/composer/ClassLoader.php:301

Fatal error: Class Magento\SamplePaymentGateway\Observer\ProcessGatewayRedirect cannot extend from interface Magento\Framework\Event\ObserverInterface in /var/www/html/m4/app/code/Magento/SamplePaymentGateway/Observer/ProcessGatewayRedirect.php on line 39

Call Stack:
    0.0001     363912   1. {main}() /var/www/html/m4/bin/magento:0
    8.1208   31555992   2. Magento\Framework\Console\Cli->run() /var/www/html/m4/bin/magento:23
    8.1213   31575552   3. Magento\Framework\Console\Cli->doRun() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Application.php:126
    8.1213   31575552   4. Magento\Framework\Console\Cli->doRun() /var/www/html/m4/vendor/magento/framework/Console/Cli.php:96
    8.1214   31575552   5. Magento\Framework\Console\Cli->doRunCommand() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Application.php:195
    8.1214   31575552   6. Magento\Setup\Console\Command\DiCompileCommand->run() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Application.php:874
    8.1216   31577160   7. Magento\Setup\Console\Command\DiCompileCommand->execute() /var/www/html/m4/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
   14.0789   43461576   8. Magento\Setup\Module\Di\App\Task\Manager->process() /var/www/html/m4/setup/src/Magento/Setup/Console/Command/DiCompileCommand.php:187
   14.7288   48151568   9. Magento\Setup\Module\Di\App\Task\Operation\RepositoryGenerator->doOperation() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/App/Task/Manager.php:56
   69.8750  158384184  10. Magento\Setup\Module\Di\Code\Reader\ClassesScanner->getList() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/App/Task/Operation/RepositoryGenerator.php:61
   69.8883  158508928  11. class_exists() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/Code/Reader/ClassesScanner.php:69
   69.8883  158509024  12. spl_autoload_call() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/Code/Reader/ClassesScanner.php:69
   69.8883  158509200  13. Composer\Autoload\ClassLoader->loadClass() /var/www/html/m4/setup/src/Magento/Setup/Module/Di/Code/Reader/ClassesScanner.php:69
   69.8884  158509328  14. Composer\Autoload\includeFile() /var/www/html/m4/vendor/composer/ClassLoader.php:301
Author: Nisse Engström, 2017-12-05

1 answers

Заменить extends на implements:

class ProcessGatewayRedirect implements ObserverInterface
 1
Author: Nero Phung, 2017-12-05 07:51:59