# Event - Args

**URL:** <https://forum.shopware.com/t/event-args/1697>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [7. Februar 2011 um 16:05 UTC](https://forum.shopware.com/t/event-args/1697 "2011-02-07T16:05:51Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [7. Februar 2011 um 16:05 UTC](https://forum.shopware.com/t/event-args/1697/1 "2011-02-07T16:05:51Z")

</div>

Hey, ich erstelle in einem Plugin zwei Events: ` $event = $this-\>createEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch' ); $this-\>subscribeEvent($event); $event = $this-\>createEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_PDFCreator', 'onGetControllerPath'); $this-\>subscribeEvent($event);` Nun geht es mir um das Template laden. Beim ersten geht das ganz einfach über: ` $view = $args-\>getSubject()-\>View(); $view-\>addTemplateDir(dirname(\_\_FILE\_\_).'/templates/'); $view-\>extendsTemplate('frontend/plugins/MEINS/index.tpl'); ` Aber wie mache ich das beim Zweiten? (Controller). Hier habe ich keine $args und kann es deshalb nicht ausführen. Wahrscheinlich habe ich es einfach immer noch nicht verstanden 😕 Ich blicks einfach nicht. Schau ich mir die Smarty Doku an, so machen die es mi ` $smarty = New smarty; $smarty-\>display('test.tpl')` Aber der Code steckt ja eig. in der Funktion View(). Soviel hab ich schon gelernt. (Gibt es eig. einen guten Editor bzw. Entwicklungsumgebung (kostenlos), welche mir die Varibalen, welche ich zur Verfügung habe anzeigt? Über den Notepad++ kann ich ja nur die einzelnen Dateien öffnen und sehe dann nicht, was ich alles in der Klasse zur Verfügung habe. Vererbung etc.) Danke

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [8. Februar 2011 um 08:28 UTC](https://forum.shopware.com/t/event-args/1697/2 "2011-02-08T08:28:43Z")

</div>

Ich bitte hier noch mal um etwas Unterstützung. Ich checks einfach nicht 😕

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [8. Februar 2011 um 08:48 UTC](https://forum.shopware.com/t/event-args/1697/3 "2011-02-08T08:48:14Z")

</div>

` $event = $this-\>createEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_PDFCreator', 'onGetControllerPath'); $this-\>subscribeEvent($event); ` ` public static function onGetControllerPath(Enlight\_Event\_EventArgs $args) { return dirname(\_\_FILE\_\_).'/Controller.php'; } ` Datei Controller.php `<?php class Shopware_Controllers_Frontend_PDFCreator extends Enlight_Controller_Action
{
	public function indexAction(){
		$this->View()-\>a = "B"; $this-\>View()-\>setTemplate(dirname(\_\_FILE\_\_)."/index.tpl"); } } ` Datei index.tpl ` Hallo {$a} ` Aufruf: [www.deinshop.de/PDFCreator](http://www.deinshop.de/PDFCreator)

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [8. Februar 2011 um 08:49 UTC](https://forum.shopware.com/t/event-args/1697/4 "2011-02-08T08:49:28Z")

</div>

Vielen Dank 🙂

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [8. Februar 2011 um 09:27 UTC](https://forum.shopware.com/t/event-args/1697/5 "2011-02-08T09:27:35Z")

</div>

Noch eine Frage. In der Bootstrap.php unter der folgenden Funktion kann ich ja auf $view-\>sArticle zugreifen. ` public static function onPostDispatch(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); print\_r($view-\>sArticle); exit; } ` Wie bekomme ich die Werte der Varibale rüber in meinen Controller? ` public static function onGetControllerPath(Enlight\_Event\_EventArgs $args) { return dirname(\_\_FILE\_\_) . '/PDFCreator.php'; } ` `<?php class Shopware_Controllers_Frontend_PDFCreator extends Enlight_Controller_Action
{
  public function indexAction()
    {
	//Hier her?				
    }
}
?>`

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [8. Februar 2011 um 12:18 UTC](https://forum.shopware.com/t/event-args/1697/6 "2011-02-08T12:18:57Z")

</div>

Hey, ich habe nun eine Lösung gefunden, aber ich weiß nicht ob die richtig ist. Funktionieren tut es auf jeden Fall. Und zwar über GET. Ich gebe beim Öffnen des Controller über GET die ID des Artikels mit: `[PDF erstellen]({url module=frontend controller=PDFCreator action=index}?id={$sArticle.articleID} "PDF erstellen")` Und frage diese dann wiederum im Controller ab: [code]\<?php class Shopware\_Controllers\_Frontend\_PDFCreator extends Enlight\_Controller\_Action  
{

```
	public function indexAction()
		{
			$id = $_GET['id'];			
			$article = Shopware()->Modules()-\>Articles()-\>sGetArticleById($id); } } ?\> [/code] Geht es auch einfacher, oder ist das der korrekte Weg? Danke
```

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [8. Februar 2011 um 12:21 UTC](https://forum.shopware.com/t/event-args/1697/7 "2011-02-08T12:21:51Z")

</div>

Das ist der korrekte Weg! Statt: ` $id = $\_GET['id']; ` Bitte: ` $id = intval($this-\>Request()-\>id); ` verwenden!

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [8. Februar 2011 um 12:57 UTC](https://forum.shopware.com/t/event-args/1697/8 "2011-02-08T12:57:03Z")

</div>

Danke dir. So langsam werde ich etwas besser 🙂 Übung macht den Meister \*lach\*
