webmatch / WbmTagManager

Shopware 5 Plugin for Google Tag Manager integration and dataLayer configuration
27 stars 19 forks source link

Subscriber Struktur #16

Closed buddhaCode closed 6 years ago

buddhaCode commented 6 years ago

Hallo David, ich hab dein Plugin etwas refaktoriert. Dabei habe ich mich gefragt wieso du nicht die ganze Arbeit im FilterRender Handler machst. Der Weg über den PostDispatch in den Variables Service als Zwischenspeicher kommt mir doch etwas umständlich vor. Oder gibt es irgendwas, was ich übersehen habe und wieso das Ganze so besser ist?!? VG Arne

dneustadt commented 6 years ago

Hallo Arne, das FilterRender Event wird im Stack wesentlich später als der PostDispatch ausgelöst. Darin wird dann ausschließlich bereits gerendertes Markup behandelt. Bei dem PostDispatch event hab ich über das \Enlight_Controller_ActionEventArgs argument noch Zugriff auf die Instanz des Controllers und damit die zu dispatchende View mitsamt allen Variablen. Daher nutze ich den Service sozusagen als Brücke, um Daten von einem früher stattfinden Event, wo ich die Daten noch separiert auslesen kann, in einem später im Stack folgenden Event wieder auszulesen. Ich finde die Idee die gesamte Logik in einen weiteren Service auszulagen übrigens gut. Ich hab die ein paar Kommentare in deinen PR geschrieben. Ich hoffe das ist halbwegs verständlich beschrieben. Wäre super wenn du quasi den Variables-Service gleich in deinen neuen Service integrieren könntest.

buddhaCode commented 6 years ago

Hey David, sorry das die Antwort so lange gedauert hat. Aber du hast natürlich recht. Anders gehts nicht. VG Arne