# JS Datei in Plugin einbinden?

**URL:** <https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823>\
**Category:** Programmierung\
**Created:** [14. September 2016 um 13:28 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823 "2016-09-14T13:28:33Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![elbsurfer](https://avatars.discourse-cdn.com/v4/letter/e/90ced4/32.png) [@elbsurfer](https://forum.shopware.com/u/elbsurfer)\
**Post date:** [14. September 2016 um 13:28 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/1 "2016-09-14T13:28:33Z")

</div>

Hallo,

ich bin derzeit etwas verwirrt, weil man viele Beispiele in der Dokumentation findet, die Shopware 5 betreffen, aber nicht Shopware 5.2 mit dem neuen Plugin Struktur.

Ich möchte gerne einen Button im Listing implementieren, der bei Click mein eigenes Plugin aufruft um den aktuellen Warenkorb abzufragen.

Nun bin ich dabei erstmal die Plugin Struktur festzulegen und habe damit begonnen:

```
 'onRouteStartup',
            'Theme_Compiler_Collect_Plugin_Javascript' => 'addJsFiles'
        ];
    }

    public function onRouteStartup(\Enlight_Controller_EventArgs $args)
    {

    }

    public function addJsFiles(Enlight_Event_EventArgs $args)
	{
	    $jsFiles = array( __DIR__. '/Resources/js/fpgetbasket.js');
	    return new Doctrine\Common\Collections\ArrayCollection($jsFiles);
	}

}

```

Im fpgetbasket.js steht bisher nur alert(„test“);

Dies wird aber nicht ausgegeben. Wo liegt hier der Fehler? Ich habe leider kein Beispiel gefunden, wie ich das korrekt umsetzen muss. Auch die Beispielplugins für 5.2 zeigen dies nicht.

Kann hier jemand helfen?

Danke!

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [15. September 2016 um 12:10 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/2 "2016-09-15T12:10:32Z")

</div>

Ich benutze diesen Weg:

```
use Doctrine\Common\Collections\ArrayCollection;

...

  private function registerEvents() {

    $this->subscribeEvent(
      'Theme_Compiler_Collect_Plugin_Javascript',
      'onCollectJavascriptFiles'
    );

  }

  public function onCollectJavascriptFiles() {
    $jsDir = __DIR__. '/Views/_resources/js/plugin.js';
    return new ArrayCollection( array($jsDir) );
  }

```

Getestet mit SW 5.2.6

---

<div class="post-metadata">

**Author:** ![elbsurfer](https://avatars.discourse-cdn.com/v4/letter/e/90ced4/32.png) [@elbsurfer](https://forum.shopware.com/u/elbsurfer)\
**Post date:** [15. September 2016 um 12:22 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/3 "2016-09-15T12:22:57Z")

</div>

Danke jetzt geht es - in diesem Format:

&nbsp;

```
 'onRouteStartup',
             'Theme_Compiler_Collect_Plugin_Javascript' => 'addJsFiles'
        ];
    }

    public function onRouteStartup(\Enlight_Controller_EventArgs $args)
    {

    }

    public function addJsFiles(\Enlight_Event_EventArgs $args)
	{
	    $jsFiles = array( __DIR__. '/Resources/js/fpgetbasket.js');
	    return new ArrayCollection($jsFiles);
	}

}

```

Noch eine andere Frage:

Ich würde nun in der JS Datei ein eigenes Plugin ablegen - wie greife ich denn von dort z.B. auf diese Funktion zu?

> <https://github.com/shopware/shopware/blob/5.2/engine/Shopware/Core/sBasket.php#L1074>

Ich möchte gerne den Warenkorb abfragen, nachdem man den Artikel hinzugefügt hat. Das mache ich am besten in einem JS-Plugin nach Shopware-Konvention, oder?

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [15. September 2016 um 12:29 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/4 "2016-09-15T12:29:58Z")

</div>

Das ist mir zu kompliziert, da ich .JS hier nur für zusätzliche jQuerys benutze. Der Warenkorb ist sicher Hookable.

---

<div class="post-metadata">

**Author:** ![elbsurfer](https://avatars.discourse-cdn.com/v4/letter/e/90ced4/32.png) [@elbsurfer](https://forum.shopware.com/u/elbsurfer)\
**Post date:** [15. September 2016 um 18:08 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/5 "2016-09-15T18:08:54Z")

</div>

Ok. Danke. Weißt Du zufällig wie man hier den aktuellen Basket zurückgeben kann?

```
    public function onFrontendPostDispatch(\Enlight_Event_EventArgs $args)
    {

		$controller = $args->get('subject');
		$view = $controller->View();
		$view->assign('basket', '');

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [16. September 2016 um 08:12 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/6 "2016-09-16T08:12:38Z")

</div>

Ich würde es über Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Checkout mal versuchen. Kann aber auch sein, dass ich mich irre.

---

<div class="post-metadata">

**Author:** ![DennisG](https://avatars.discourse-cdn.com/v4/letter/d/9fc348/32.png) [@DennisG](https://forum.shopware.com/u/DennisG)\
**Post date:** [20. September 2016 um 11:32 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/7 "2016-09-20T11:32:51Z")

</div>

```
       $basket = $this->get('modules')->Basket();
       
        echo '';
        print_r($basket->sGetBasket());
        echo '';
        die();

```

versuchs mal damit =)&nbsp;

---

<div class="post-metadata">

**Author:** ![elbsurfer](https://avatars.discourse-cdn.com/v4/letter/e/90ced4/32.png) [@elbsurfer](https://forum.shopware.com/u/elbsurfer)\
**Post date:** [21. September 2016 um 11:41 UTC](https://forum.shopware.com/t/js-datei-in-plugin-einbinden/39823/8 "2016-09-21T11:41:20Z")

</div>

Danke.

Ich habe mittlerweile folgende Form:

&nbsp;&nbsp; &nbsp;

Und mein eigenes JS-Plugin:

```
;(function($, window) {
    'use strict';

    window.StateManager.addPlugin('*[data-fp-add-article="true"]', 'fbGetBasket');

	// Register your plugin
	$.plugin('fbGetBasket', {
	   defaults: {
		   'eventName': 'click',
		   'addArticleUrl': window.controller['ajax_add_article'],
		   'fpCurrentBasket' : fpCurrentBasket,
		},

	   init: function() {
			var me = this,
			opts = me.opts;
            var $el = me.$el
			this.applyDataAttributes();

....

```

Wie komme ich denn an die Variable sAdd / sQuantity aus der Form? Die Form wird serialized durch:&nbsp;var ajaxData = $el.serialize();&nbsp;aber dadurch komme ich nicht an sAdd…?
