$wsDirectOrder-Modul lesen Sie den Zustand einer Direktbestellung. Bei der Direktbestellung legt der Kunde Produkte durch Eingabe ihrer Artikelnummern direkt in den Warenkorb, ohne sie einzeln im Shop zu suchen. Das Modul liefert die aktuelle Anzahl der Eingabezeilen und die bisher erfassten Positionen samt Gültigkeit.
Auf dieser Seite geht es um das Lesen des Direktbestell-Zustands. Das Hinzufügen und Löschen von Positionen erfolgt über die Aktionen DirectOrderAdd / DirectOrderDelete.
Grundkonzept
Der Bestellschein ist ein Formular mit mehreren Eingabezeilen. In jede Zeile gibt der Kunde eine Artikelnummer (und eine Menge) ein. Beim Absenden prüft die AktionDirectOrderAdd, ob die Nummer existiert, und legt das Produkt in den Warenkorb.
$wsDirectOrder stellt dabei den aktuellen Zustand bereit:
currentLines– wie viele Eingabezeilen aktuell angezeigt werden. Der Wert stammt aus der Konfiguration ($wsConfig.directOrder:initialNumberbismaximalNumber).items– die bereits erfassten Positionen, je mitid,quantityundvalid.
Gültigkeit
Das Feldvalid einer Position zeigt an, ob die eingegebene Artikelnummer im Shop existiert und bestellbar ist. Werten Sie es aus, um dem Kunden eine ungültige Eingabe direkt zurückzumelden.
Modulübersicht
Beispiel / Ausschnitt über$wsDirectOrder
| Variable | Typ | Beschreibung |
|---|---|---|
currentLines | int | Aktuelle Anzahl der angezeigten Eingabezeilen. |
items | array | Erfasste Bestellpositionen (Struktur siehe unten). |
items[])
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
id | string | Eingegebene Artikelnummer. |
quantity | int | Eingegebene Menge. |
valid | bool | true, wenn die Artikelnummer existiert und bestellbar ist. |
Templates
Der Bestellschein liegt im Standard im Templatemodule/directOrder.htm. Verlinken Sie ihn z. B. im Footer (siehe Beispiel).
Variablen
$wsDirectOrder.currentLines
Gibt die aktuelle Anzahl der angezeigten Eingabezeilen aus. Der Wert wird über$wsConfig.directOrder konfiguriert (initialNumber als Start, maximalNumber als Obergrenze). Nutzen Sie ihn beispielsweise, um genau so viele Zeilen zu erzeugen.
$wsDirectOrder.items
Gibt die erfassten Bestellpositionen aus. Über den Zeilenindex greifen Sie auf eine bestimmte Position zu (items[$index]).
Eigenschaften einer Bestellposition
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
id | string | Eingegebene Artikelnummer. |
quantity | int | Eingegebene Menge. |
valid | bool | true, wenn die Artikelnummer existiert und bestellbar ist. |
Methoden
Für$wsDirectOrder stehen keine Methoden zur Verfügung.
Aktionen
$wsDirectOrder selbst stellt keine Aktionen bereit. Das Hinzufügen und Löschen von Positionen erfolgt über die Aktionen.
Beispiele
Bestellschein-Template
Dieses Beispiel erzeugt für jede konfigurierte Zeile (currentLines) eine Eingabereihe. range(0, currentLines - 1) liefert die Indizes 0 bis currentLines - 1. Pro Zeile werden die Aktionen DirectOrderAdd und DirectOrderDelete mit dem Zeilenindex als tag erzeugt, damit Eingaben und Fehler der richtigen Zeile zugeordnet werden. Der Filter ifNull('') setzt einen leeren Wert, falls die Zeile noch nicht erfasst wurde.
Ein Bestellschein mit so vielen Eingabereihen, wie
currentLines vorgibt. Bereits erfasste Zeilen haben ihre Artikelnummer und Menge vorbelegt.
Fehlermeldungen anzeigen
Die AktionDirectOrderAdd meldet Fehler feldbezogen über errorsByField. Dieses Beispiel zeigt die Fehler zur Artikelnummer (id) und zur Menge (quantity) je Zeile.
Bei fehlerhafter Eingabe (z. B. ungültige Artikelnummer oder Menge) erscheint die zugehörige Meldung in der betreffenden Zeile.
Seite im Footer verlinken
Den Link zur Direktbestellung erzeugen Sie mitviewUrl(). Den Pfad zum Template als Argument übergeben.
Ein Link, der zur Direktbestell-Seite führt.
Weiterführende Links
- $wsActions – stellt die Aktionen
DirectOrderAdd/DirectOrderDeleteund die FehlerstrukturerrorsByFieldbereit. - $wsConfig.directOrder – konfiguriert Zeilenanzahl und zusätzliche Artikelnummer-Felder.
- Online-Bestellschein – ausführliches Praxisbeispiel.
- checkout - Bestellablauf – Konfiguration des Bestellablaufs.
