# Funktion Hooken

**URL:** <https://forum.shopware.com/t/funktion-hooken/69970>\
**Category:** Programmierung\
**Created:** [1. Oktober 2020 um 11:26 UTC](https://forum.shopware.com/t/funktion-hooken/69970 "2020-10-01T11:26:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sehess86](https://avatars.discourse-cdn.com/v4/letter/s/9fc29f/32.png) [@sehess86](https://forum.shopware.com/u/sehess86)\
**Post date:** [1. Oktober 2020 um 11:26 UTC](https://forum.shopware.com/t/funktion-hooken/69970/1 "2020-10-01T11:26:23Z")

</div>

Liebe&nbsp;Shopware Community,&nbsp;

folgende Problemstellung:&nbsp;&nbsp;

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&nbsp;Artikel&nbsp;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/](https://developers.shopware.com/blog/2015/06/09/understanding-the-shopware-hook-system/)

Besten Dank für Eure Hilfe!

Sebastian

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [1. Oktober 2020 um 15:37 UTC](https://forum.shopware.com/t/funktion-hooken/69970/2 "2020-10-01T15:37:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![sehess86](https://avatars.discourse-cdn.com/v4/letter/s/9fc29f/32.png) [@sehess86](https://forum.shopware.com/u/sehess86)\
**Post date:** [2. Oktober 2020 um 09:00 UTC](https://forum.shopware.com/t/funktion-hooken/69970/3 "2020-10-02T09:00:42Z")

</div>

Hi Shyim!&nbsp;  
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!

&nbsp;
