Funktion Hooken

Liebe Shopware Community, 

folgende Problemstellung:  

Wir versuchen die Funktion createDataIO in der DataFactory des Plugins SWAGImportExport zu hooken. Diese Klasse implementiert zwar das Interface Enlight_Hook, Versuche auf das Event Shopware_Components_SwagImportExport_Factories_DataFactory::createDataIO::replace zu hooken, schlägt aber fehl. Auch das Event DataFactory::createDataIO::replace, wird nicht aufgerufen. Wie lautet das korrekte Event und wo in der Dokumentation ist Beschrieben wie sich die Eventnamen zusammensetznen? Im nachfolgenden Artikel ist das leider sehr spärlich beschrieben und - so scheint uns - veraltet:

https://developers.shopware.com/blog/2015/06/09/understanding-the-shopware-hook-system/

Besten Dank für Eure Hilfe!

Sebastian

Die Klasse muss von Enlight_Hook eerben und via Enlight_Hook auch constructet werden. Schau dir notfalls das decorator pattern an

Hi Shyim! 
Vielen Dank für deine Antwort. Ich habe gerade nachgeschaut und konnte keine Superklasse namens Enlight_Hook finden. Lediglich ein Interface. Das habe ich ebenfalls noch extended, was aber keinen Unterschied macht, da es ohnehin leer ist.
Das Decorator-Pattern hat mir leider nur bedingt weitergeholfen, da die Shopware Dokumentaion ausschließlich auf Services eingeht. Einen grundlegenden Unterschied von meinem Code, zu dem in der Dokumentation kann ich nicht finden - abgesehen davon, dass es um Services geht. Meinen Subscriber findest du hier:

<?phpnamespace WavExportExtension\Subscriber;use Enlight\Event\SubscriberInterface;
use Enlight_Hook;
use Shopware\Components\SwagImportExport\DbAdapters\DataDbAdapter;
use Shopware\Components\SwagImportExport\Logger\Logger;
use WavExportExtension\Components\DbAdapters\DirectDbAdapter;class CustomDbAdapterSubscriber implements SubscriberInterface, Enlight_Hook
{ private $path; public function __construct($pluginPath)
    {
        $this->path = $pluginPath; } /\*\* \* @inheritDoc \*/ public static function getSubscribedEvents() { return ["Shopware\_Components\_SwagImportExport\_Factories\_DataFactory::createDataIO::replace" =\> "createDataIO"]; } public function createDataIO(\Enlight\_Event\_EventArgs $args) { throw new \Exception("hier"); }

Und meine services.xml hier:

<?xml version="1.0" ?><container xmlns="&lt;a href=" http: rel="noopener noreferrer" target="_blank">http://symfony.com/schema/dic/services"
           xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" rel="noopener noreferrer" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>"
           xsi:schemaLocation="<a href="http://symfony.com/schema/dic/services" rel="noopener noreferrer" target="_blank">http://symfony.com/schema/dic/services</a> <a href="http://symfony.com/schema/dic/services/services-1.0.xsd" rel="noopener noreferrer" target="_blank">http://symfony.com/schema/dic/services/services-1.0.xsd</a>"&gt;
    <services>
        <!-- Event Subscriber -->
        <service id="wav_export_extension_db_adapter_subscriber" class="WavExportExtension\Subscriber\CustomDbAdapterSubscriber">
            <tag name="shopware.event_subscriber"></tag>
            <argument>%wav_export_extension.plugin_dir%</argument>
        </service>
    </services>
</container>

Vielen Dank nochmals!