Neu Plugin zum Ergänzen der ShopID

css_evo-con

Neues Mitglied
8. Oktober 2021
1
0
Ich möchte ein Plugin für den Connector erstellen, das die id_shop einer Besellung als Attribut an den übertragenen customerOrder Datensatz anhängt. Leider passiert nichts. Ich habe im Ordner plugins den Ordner multishop angelegt und darin die Datei Bootstrap.php mit folgenden Inhalt:

PHP:
<?php

namespace multishop;

use jtl\Connector\Core\Logger\Logger;
use jtl\Connector\Event\CustomerOrder\CustomerOrderAfterPullEvent;
use jtl\Connector\Model\CustomerOrderAttr;
use jtl\Connector\Model\Identity;
use jtl\Connector\Plugin\IPlugin;
use Symfony\Component\EventDispatcher\EventDispatcher;

//Every plugin which occurs in the connector/plugins is registered by the connector
class Bootstrap implements IPlugin
{
    //Using the registerListener function, provided by the PluginInterface to define when the plugin should call what method
    public function registerListener(EventDispatcher $dispatcher)
    {
        //Using static variables to define the wanted event name which is used to determine when the plugins is called
        $eventName = CustomerOrderAfterPullEvent::EVENT_NAME;

        $dispatcher->addListener($eventName, [$this, "handle"]);
    }

    public function handle(CustomerOrderAfterPullEvent $event)
    {
        Logger::write('Handler called', Logger::DEBUG, 'plugin');
        $intPSOrderID = (int)$event->getCustomerOrder()->getId()->getEndpoint();

        $intShopID = \Db::getInstance()->getValue('
            SELECT o.id_shop FROM ps_orders o WHERE o.id_order = '.$intPSOrderID.'
        ');

        $event->getCustomerOrder()->addAttribute(
            (new CustomerOrderAttr())
            ->setId(new Identity('ShopID'.$intShopID))
            ->setCustomerOrderId($event->getCustomerOrder()->getId())
            ->setKey('ShopID')
            ->setValue($intShopID)
        );
    }
}

Muss ich noch etwas anderes machen um das Plugin zum laufen zu bekommen? Oder fällt euch ein Fehler in meinem Code auf? Das ist mein erster Kontakt mit einem Connector-Plugin, ich bin für jeden Hinweis dankbar.
 

Immanuel

Gesperrter Benutzer
24. August 2016
1.542
329
Hallo @css_evo-con und herzlich willkommen im Forum!

Hab gerade mal nachgeschaut, der Dateiname muss bootstrap.php (komplett klein geschrieben) sein.

PS: Code sieht auf den ersten Blick in Ordnung aus.
 

Ähnliche Themen