# Hooks vs. Events

**URL:** <https://forum.shopware.com/t/hooks-vs-events/36219>\
**Category:** Programmierung\
**Created:** [21. April 2016 um 16:49 UTC](https://forum.shopware.com/t/hooks-vs-events/36219 "2016-04-21T16:49:09Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![azeiner](https://avatars.discourse-cdn.com/v4/letter/a/e19b73/32.png) [@azeiner](https://forum.shopware.com/u/azeiner)\
**Post date:** [21. April 2016 um 16:49 UTC](https://forum.shopware.com/t/hooks-vs-events/36219/1 "2016-04-21T16:49:09Z")

</div>

hallo

ich möchte gern das event abfangen wenn der user ein rechnungs-pdf in der bestellung erstellt d.h. ich hätte dann auch gern die daten von der rechnung bzw. dem dokument an sich …

soweit so gut

```
**public function** install() { _/\* $this-\>subscribeEvent(_ _'Enlight\_Controller\_Action\_Backend\_Order\_createDocument', \<\< funktioniert nur bekomme ich keine daten_ _'getBackendController'_ _);\*/_ _// initDocument($orderID, $documentID, array $config = array())_ $this-\>subscribeEvent( **'Shopware\_Components\_Document::initDocument::before'** , \<\< wird nicht gefeuert **'beforeCreateDocument'** ); **return true** ; }

```

&nbsp;

mach ich das ganze über controller events wird das ganze beim drücken des buttons gefeuert - aber die args sind leer soweit ich das sagen kann!

über einen hook beim dokument init wird das ganz gleich gar nicht ausgelöst obwohl die klasse hookable wäre - soweit ich das gesehen habe.

&nbsp;

jemand eine idee dazu?

&nbsp;

lg andreas

---

<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:** [21. April 2016 um 17:34 UTC](https://forum.shopware.com/t/hooks-vs-events/36219/2 "2016-04-21T17:34:12Z")

</div>

Hi,

ich fürchte bei dem Call liegt es daran, dass es statisch ist. Da greift der Hook-Proxy nicht.

Ansonsten geht vermutlich auch ein Pre- bzw. PostDispatch-Event auf&nbsp;\Shopware\_Controllers\_Backend\_Order::createDocumentAction - da bekommst du über die $args-\>getSubject()-\>Request() die OrderID und den DocumentType und über $args-\>getSubject()-\>View()-\>getAssign() die zurück gegebenen Daten.&nbsp;

Daniel

---

<div class="post-metadata">

**Author:** ![azeiner](https://avatars.discourse-cdn.com/v4/letter/a/e19b73/32.png) [@azeiner](https://forum.shopware.com/u/azeiner)\
**Post date:** [22. April 2016 um 08:10 UTC](https://forum.shopware.com/t/hooks-vs-events/36219/3 "2016-04-22T08:10:33Z")

</div>

hallo daniel, danke dir! das probier ich sofort aus! lg andreas

---

<div class="post-metadata">

**Author:** ![azeiner](https://avatars.discourse-cdn.com/v4/letter/a/e19b73/32.png) [@azeiner](https://forum.shopware.com/u/azeiner)\
**Post date:** [22. April 2016 um 08:34 UTC](https://forum.shopware.com/t/hooks-vs-events/36219/4 "2016-04-22T08:34:11Z")

</div>

```
 danke nochmal daniel, so funktioniert es tatsächlich - komisch den ansatz hatte ich bereits nur kam nichts zurück - allerdings kann es sein das man nicht nur den cache löschen sondern das plugin wirklich neu installieren muss und dann die änderungen erst wirksam werden! danke nochmal! $this-\>subscribeEvent( **'Enlight\_Controller\_Action\_Backend\_Order\_createDocument'** , **'onDocumentCreate'** );

```

&nbsp;

```
**public function**  **onDocumentCreate** (Enlight\_Event\_EventArgs $arguments) { $subject = $arguments-\>getSubject(); $request = $ subject -\>Request(); $request-\>get( **"orderId"** ); $request-\>get( **"documentType"** ); } 

```

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [22. April 2016 um 11:50 UTC](https://forum.shopware.com/t/hooks-vs-events/36219/5 "2016-04-22T11:50:03Z")

</div>

> [@azeiner schrieb:](https://forum.shopware.com/profile/23265/azeiner "azeiner")
> 
> danke nochmal daniel, so funktioniert es tatsächlich - komisch den ansatz hatte ich bereits nur kam nichts zurück - allerdings kann es sein das man nicht nur den cache löschen sondern das plugin wirklich neu installieren muss und dann die änderungen erst wirksam werden! danke nochmal! $this-\>subscribeEvent( **‚Enlight\_Controller\_Action\_Backend\_Order\_createDocument‘** , **‚onDocumentCreate‘** );
> 
> &nbsp;
> 
> **public function**** onDocumentCreate**(Enlight\_Event\_EventArgs $arguments) { $subject = $arguments-\>getSubject(); $request = $ subject -\>Request(); $request-\>get(**„orderId“**); $request-\>get(**„documentType“** ); }

Hallo,

es ist doch aber klar, wenn du in der install-Methode etwas änderst, das die Änderung nur beim (neu-)installieren wirksam werden können. Vor allem wenn du ein völlig anderes Event oder Hook ansprichst.

Beste Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![azeiner](https://avatars.discourse-cdn.com/v4/letter/a/e19b73/32.png) [@azeiner](https://forum.shopware.com/u/azeiner)\
**Post date:** [22. April 2016 um 11:52 UTC](https://forum.shopware.com/t/hooks-vs-events/36219/6 "2016-04-22T11:52:27Z")

</div>

> [@sschreier schrieb:](https://forum.shopware.com/profile/18157/sschreier "sschreier")
> 
> > [@azeiner schrieb:](https://forum.shopware.com/profile/23265/azeiner "azeiner")
> > 
> > danke nochmal daniel, so funktioniert es tatsächlich - komisch den ansatz hatte ich bereits nur kam nichts zurück - allerdings kann es sein das man nicht nur den cache löschen sondern das plugin wirklich neu installieren muss und dann die änderungen erst wirksam werden! danke nochmal! $this-\>subscribeEvent( **‚Enlight\_Controller\_Action\_Backend\_Order\_createDocument‘** , **‚onDocumentCreate‘** );
> > 
> > &nbsp;
> > 
> > **public function**** onDocumentCreate**(Enlight\_Event\_EventArgs $arguments) { $subject = $arguments-\>getSubject(); $request = $ subject -\>Request(); $request-\>get(**„orderId“**); $request-\>get(**„documentType“** ); }
> 
> Hallo,
> 
> es ist doch aber klar, wenn du in der install-Methode etwas änderst, das die Änderung nur beim (neu-)installieren wirksam werden können. Vor allem wenn du ein völlig anderes Event oder Hook ansprichst.
> 
> Beste Grüße
> 
> Sebastian

hi sebastian

ja das weiß ich jetzt auch 🙂 bei allen anderen teilen war es mit cache löschen erledig! anyhow - es funktioniert so wie es soll 🙂 danke auf jedenfall!

lg andreas
