# Event für Artikel anlegen, ändern, löschen

**URL:** <https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [12. Januar 2015 um 14:48 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517 "2015-01-12T14:48:30Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jakko](https://avatars.discourse-cdn.com/v4/letter/j/51bf81/32.png) [@Jakko](https://forum.shopware.com/u/Jakko)\
**Post date:** [12. Januar 2015 um 14:48 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517/1 "2015-01-12T14:48:30Z")

</div>

Hallo! Ich suche eine Möglichkeit auf Aktionen wie Artikel ändern (löschen, erstellen), die man im Backend macht per Plugin zugreifen zu können. Immer wenn eines dieser Aktionen ausgeführt wird, soll etwas im Datenbank gemacht werden. Ich dachte es geht mit einem Hook auf saveAction() (die Methode aus der Klasse Controller/backend/Article.php) Nur leider klappt das nicht so wie ich dachte… Ich bekomme überhaupt keine Ausgabe, wenn ich eine Artikel ändere und speichere. ? Bootstrap ` class Shopware\_Plugins\_Frontend\_ArtikelEventTest\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { public function install() { $this-\>registerEvents(); } private function registerEvents() { $this-\>subscribeEvent( 'Article::saveAction::after', 'afterSaveAction' ); } public function afterSaveAction(Enlight\_Hook\_HookArgs $arguments) { Shopware()-\>Debuglogger()-\>info('\*\*\* afterSaveAction \*\*\* '); // Do something with database } } `

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [12. Januar 2015 um 14:51 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517/2 "2015-01-12T14:51:30Z")

</div>

[quote=“jakko”]Article::saveAction::after[/quote] Was soll denn “Article” in diesem Fall sein? Siehe: [http://wiki.shopware.com/Shopware-4-Eve … l\_981.html](http://wiki.shopware.com/Shopware-4-Events-und-Hooks%5C_detail%5C_981.html) Viele Grüße

---

<div class="post-metadata">

**Author:** ![Jakko](https://avatars.discourse-cdn.com/v4/letter/j/51bf81/32.png) [@Jakko](https://forum.shopware.com/u/Jakko)\
**Post date:** [12. Januar 2015 um 15:03 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517/3 "2015-01-12T15:03:53Z")

</div>

Article ist der Klassenname auf die ich zugreifen möchte, die hier zu finden ist „engine/Shopware/Controllers/Backend/Article.php“ Kann man etwa nicht auf diese Klasse mit einem Hook zugreifen?

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [12. Januar 2015 um 15:09 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517/4 "2015-01-12T15:09:31Z")

</div>

Und noch einmal der Link, der alle deine Fragen beantworten und deine Probleme beheben wird: [http://wiki.shopware.com/Shopware-4-Eve … l\_981.html](http://wiki.shopware.com/Shopware-4-Events-und-Hooks%5C_detail%5C_981.html) Viele Grüße

---

<div class="post-metadata">

**Author:** ![dirk\_designverign](https://avatars.discourse-cdn.com/v4/letter/d/ec9cab/32.png) [@dirk\_designverign](https://forum.shopware.com/u/dirk_designverign)\
**Post date:** [13. Januar 2015 um 11:17 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517/5 "2015-01-13T11:17:30Z")

</div>

Sind die Doctrine Hooks hier eventuell interessant? Siehe: [http://wiki.shopware.com/Shopware-4-Mod … l\_982.html](http://wiki.shopware.com/Shopware-4-Models%5C_detail%5C_982.html) ganz unten.

---

<div class="post-metadata">

**Author:** ![DanielNogel](https://avatars.discourse-cdn.com/v4/letter/d/96bed5/32.png) [@DanielNogel](https://forum.shopware.com/u/DanielNogel)\
**Post date:** [13. Januar 2015 um 11:29 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517/6 "2015-01-13T11:29:50Z")

</div>

Hi, wie dirk\_designverign schon sagt, sind hier besonders die Lifecycle-Events interessant - die werden immer ausgelöst, wenn bspw. ein Artikel-Model bearbeitet wird - damit unterstützt du also direkt das Artikel-Backend-Modul oder die API. Für andere Aktionen kann es natürlich immer auch nötig sein, zusätzlich bestimmte PostDispatch-Events zu registrieren, wie Aquatuning schon angedeutet hat. Bei den Lifecycle-Events solltest du nur etwas aufpassen - wenn man da in den Callbacks flusht kann es schnell zu Problemen kommen, das sollte man vermeiden. Mittlerweile denke ich fast, dass man sich in den Lifecycle-Events am besten erstmal nur „merkt“, welche Artikel geändert wurden und dann zu einem späteren Zeitpunkt (kurz vor Ende des Requests) seine Schreiboperationen durchführt. lG Daniel

---

<div class="post-metadata">

**Author:** ![JSchwehn](https://avatars.discourse-cdn.com/v4/letter/j/85f322/32.png) [@JSchwehn](https://forum.shopware.com/u/JSchwehn)\
**Post date:** [14. Januar 2015 um 11:58 UTC](https://forum.shopware.com/t/event-fur-artikel-anlegen-andern-loschen/24517/7 "2015-01-14T11:58:07Z")

</div>

Hi, ich hatte auch das Problem und dabei gesehen das Shopware nicht überall auf Doctrine zurück greift um auf die Datenbank zu zugreifen. Ich habe mir entsprechende MySQL Trigger gesetzt, die mir in eine Tabelle schreiben, welcher Artikel oder welche Bestellung eine Änderung erfahren hat. Die Daten lese ich in einem Cron aus und reagiere entsprechend. Ein Vorteil ist, dass ich \*alle\* Änderungen an den Daten mitbekomme auch wenn die nicht von Shopware kommen (z.B. phpMyAdmin). Ein Nachteil ist, das man wissen muss das da ein Trigger existiert, die vergisst man mal gerne und hat dann beim Debuggen immer arbeit als nötig.
