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.
'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?
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?
;(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: var ajaxData = $el.serialize(); aber dadurch komme ich nicht an sAdd…?