$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 Funktionurl() 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ösenFü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 überurl() 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
"ƒ()" kennzeichnet eine Funktion (Methode). current ist null, wenn keine Aktion ausgeführt wurde.
Variablen und Methoden in der Übersicht
| Name | Rückgabe-Typ | Beschreibung |
|---|---|---|
csrfToken | string | CSRF-Schutz-Token der aktuellen Sitzung; als Parameter wscsrf mitzusenden. |
current | map | Ergebnis der gerade ausgeführten Aktion (Erfolg, Fehler, Meldungen). null, wenn keine Aktion lief. |
create() | map | Erzeugt ein Aktions-Objekt zur Verwendung in Formularen. |
url() | string | Erzeugt eine URL, die eine bestimmte Aktion ausführt (für Links). |
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 istnull, wenn keine Aktion ausgeführt wurde.
Eigenschaften von $wsActions.current
| Eigenschaft | Rückgabe-Typ | Beschreibung |
|---|---|---|
name | string | Name der ausgeführten Aktion (z. B. "BasketItemAdd"). |
id | string | Eindeutige ID der Aktion. Format: <ActionName>:<ActionTag>, falls ein Tag vergeben wurde, sonst <ActionName>. |
csrf | string | CSRF-Token der ausgeführten Aktion. |
tag | string | Vergebenes Tag der Aktion, falls vorhanden. |
params | map | Bereits übergebene Parameter-Werte der Aktion. |
success | bool | Ob die Aktion erfolgreich war. |
successInfo | map | Zusätzliche Informationen vom Shop bei Erfolg. |
error | bool | Ob ein Fehler aufgetreten ist. |
errors | list | Liste aller aufgetretenen Fehler (Struktur siehe unten). |
errorsByField | map | Fehler, einem Feld zugeordnet (Schlüssel = Feldname). |
globalErrors | list | Fehler, die keinem Feld zuzuordnen sind. |
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[])
| Eigenschaft | Rückgabe-Typ | Beschreibung |
|---|---|---|
code | string | Fehler-Code. |
subCode | string | Optionaler Code zur genaueren Spezifikation von code. |
field | string | Feld, bei dem der Fehler aufgetreten ist (leer bei globalen Fehlern). |
text | string | Fehlertext aus der Konfiguration. |
errorsByField ordnet Fehler einem Eingabefeld zu. Nutzen Sie das, um eine Fehlermeldung direkt neben dem betroffenen Feld auszugeben, statt nur eine allgemeine Meldung.
Methoden
$wsActions.create()
Erzeugt ein Aktions-Objekt zur Verwendung in Formularen. Verwenden Siecreate(), 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ückgabemap – das Aktions-Objekt.
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
actionName | string | ja | Name der auszuführenden Aktion (z. B. "BasketItemAdd"). |
paramDefaults | map | nein | Vorbelegte Parameter, die beim Ausführen noch geändert werden können (z. B. eine Default-Menge). |
target | string | nein | Zielseite nach erfolgreicher Ausführung. |
tag | string | nein | Frei wählbare Bezeichnung, um mehrere Aktionen zu unterscheiden. |
$wsActions.url()
Erzeugt eine URL, die eine bestimmte Aktion ausführt. Verwenden Sieurl() 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ückgabestring – die URL, die die Aktion ausführt.
Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
action | string | ja | Name der auszuführenden Aktion. |
target | string | ja | Zielseite nach erfolgreicher Ausführung. |
params | map | ja | Parameter der Aktion (z. B. productId). |
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, undcurrent 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.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 mitcreate() vorbereitet und in ein Formular eingebettet. Nach dem Absenden werden Fehler direkt am betroffenen Feld angezeigt.
Stimmen die Daten nicht, erscheint die Fehlermeldung direkt unter dem betroffenen Feld.
Weiterführende Links
- 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()undviewUrl()die Zielseiten, dieurl()undcreate()alstargeterwarten.
