Skip to main content
Mit dem $wsActions-Modul können Sie Aktionen im Frontend auslösen, beispielsweise ein Produkt in den Warenkorb legen, ein Formular absenden oder einen Kunden ein- bzw. ausloggen. Anschließend werten Sie das Ergebnis (Erfolg oder Fehler) aus. Auf dieser Seite geht es um das Auslösen und Auswerten von Aktionen über das $wsActions-Modul. Welche Aktionen es gibt und welche Parameter eine einzelne Aktion (z. B. BasketItemAdd oder Login) erwartet, ist in der Aktionen-Referenz beschrieben. Dort finden Sie die fachliche Bedeutung der einzelnen Aktionsnamen.

Grundkonzept

Eine Aktion durchläuft immer dieselben Schritte: Aktion vorbereiten → einbinden → auslösen → Ergebnis lesen → reagieren. Sie bereiten die Aktion im Template vor, entweder als Link mit der Funktion url() oder als Formularobjekt mit der Funktion create(). Der Kunde löst die Aktion dann durch Klicken oder Absenden aus. Der Shop führt sie aus und baut die Zielseite neu auf. Auf dieser neuen Seite finden Sie das Ergebnis unter $wsActions.current und können entsprechend reagieren, beispielsweise mit einer Erfolgsmeldung oder der Anzeige von Fehlern. Wege, eine Aktion auszulösen
Für einen einfachen Klick, beispielsweise auf den Button „In den Warenkorb“, erzeugen Sie mit der Funktion url() einen Link. Wenn der Kunde etwas eingeben soll (z. B. ein Login mit Benutzername und Passwort), erzeugen Sie mit create() ein Aktions-Objekt und betten es in ein Formular ein. Der Unterschied liegt also darin, ob der Kunde noch Daten eingibt oder nicht.
Zeitpunkt der Ausführung: Der Template-Code läuft beim Seitenaufbau. $wsActions.current enthält daher das Ergebnis der Aktion, die in der Anfrage ausgeführt wurde, mit der diese Seite erzeugt wurde. Wurde keine Aktion ausgeführt, ist current null – prüfen Sie deshalb immer zuerst auf Vorhandensein, bevor Sie auf Ergebnisse zugreifen.

CSRF-Schutz (gilt für alle Aktionen)

Jede Aktion muss ein gültiges CSRF-Schutz-Token mitschicken, sonst lehnt der Shop die Anfrage ab. Das schützt davor, dass Aktionen von fremden Seiten heraus ungewollt ausgelöst werden. Wenn Sie Aktionen über url() oder create() erzeugen, wird das Token automatisch eingebettet. Nur wenn Sie eine Anfrage von Hand zusammenbauen, müssen Sie das Token aus $wsActions.csrfToken selbst als Parameter wscsrf mitgeben.

Verfügbarkeit von current

$wsActions.current ist nur gefüllt, wenn in derselben Anfrage eine Aktion ausgeführt wurde. Auf einer normal aufgerufenen Seite ist der Wert null. Deshalb beginnen die Ergebnisbeispiele unten mit einer Prüfung: {{ if $wsActions.current }}. Ohne diese Prüfung würden Sie auf null zugreifen.

Modulübersicht

Beispiel / Ausschnitt über $wsActions
JSON-Ausgabe
Anmerkung: "ƒ()" kennzeichnet eine Funktion (Methode). current ist null, wenn keine Aktion ausgeführt wurde. Variablen und Methoden in der Übersicht

Variablen

$wsActions.csrfToken

Enthält das CSRF-Schutz-Token der aktuellen Sitzung. Sie benötigen es nur, wenn Sie eine Aktionsanfrage manuell zusammenstellen. In diesem Fall muss es als Parameter „wscsrf“ mitgesendet werden, damit der Shop die Anfrage akzeptiert. Bei url() und create() geschieht das automatisch.

$wsActions.current

Enthält das Ergebnis der im aktuellen Aufruf ausgeführten Aktion, also Erfolg oder Fehler samt Meldungen. Der Wert ist null, wenn keine Aktion ausgeführt wurde.

Eigenschaften von $wsActions.current

Das Tag (current.tag) wird derzeit nicht ausgewertet. Sie können es über create() vergeben, um mehrere gleichartige Aktionen auf einer Seite auseinanderzuhalten.

Eigenschaften eines Fehlers (current.errors[])

Name der Aktion auswerten Prüfen Sie vor der Verarbeitung des Ergebnisses, welche Aktion ausgeführt wurde. So reagieren Sie nicht versehentlich auf eine andere Aktion.
Erfolg auswerten
Fehler je Feld anzeigen errorsByField ordnet Fehler einem Eingabefeld zu. Nutzen Sie das, um eine Fehlermeldung direkt neben dem betroffenen Feld auszugeben, statt nur eine allgemeine Meldung.
Alle Fehler auflisten

Methoden

$wsActions.create()

Erzeugt ein Aktions-Objekt zur Verwendung in Formularen. Verwenden Sie create(), wenn der Kunde vor dem Auslösen noch Daten eingibt (z. B. Login-Daten). Das Objekt liefert die Werte (u. a. id und csrf), die Sie als versteckte Formularfelder einbinden können. Das Objekt hat dieselben Eigenschaften wie $wsActions.current. Signatur
$wsActions.create(actionName, paramDefaults, target, tag)
Rückgabe
map – das Aktions-Objekt.
Parameter Beispiel, das eine Warenkorb-Aktion erzeugt:

$wsActions.url()

Erzeugt eine URL, die eine bestimmte Aktion ausführt. Verwenden Sie url() für einen Link, bei dem der Kunde keine weiteren Daten eingibt (z. B. „In den Warenkorb“ oder „Abmelden“). Signatur
$wsActions.url(action, target, params)
Rückgabe
string – die URL, die die Aktion ausführt.
Parameter Beispiel, das einen Link zum Hinzufügen in den Warenkorb erzeugt:
Die Funktion $wsViews.current.url() stammt aus dem Modul $wsViews und liefert die aktuelle Seite als Ziel. Dadurch bleibt der Kunde nach dem Hinzufügen auf derselben Seite.

Beispiele

Produkt in den Warenkorb legen und Ergebnis auswerten

Dieses Beispiel zeigt den vollständigen Ablauf: Der Link löst die Aktion aus, nach dem Klick wird die Seite neu aufgebaut, und current wird ausgewertet.
productId ist ein Platzhalter und muss durch die ID eines existierenden Produkts ersetzt werden. Eine nicht existierende Produkt-ID führt nicht zu einem auswertbaren current.error, sondern kann die Anfrage serverseitig scheitern lassen.
Ergebnis
Der Kunde bleibt nach dem Klick auf der Seite und sieht entweder eine Bestätigung oder die konkreten Fehlermeldungen der Aktion.

Login-Formular mit Feldfehlern

Hier gibt der Kunde Daten ein, daher wird die Aktion mit create() vorbereitet und in ein Formular eingebettet. Nach dem Absenden werden Fehler direkt am betroffenen Feld angezeigt.
Ergebnis
Stimmen die Daten nicht, erscheint die Fehlermeldung direkt unter dem betroffenen Feld.

  • Aktionen (Konzept und Referenz) – was Aktionen sind, wie sie abgesichert werden und welche Aktionsnamen mit welchen Parametern es gibt. Diese Seite zeigt nur den Zugriff über $wsActions.
  • $wsViews – liefert mit current.url() und viewUrl() die Zielseiten, die url() und create() als target erwarten.