Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Durch Hinzufügen einer Formularmaske zu der Kunden-Tabelle können weiter Felder zu den Benutzerformularen hinzugefügt werden.Image Removed

...

In der Feldkonfiguration kann definiert werden in welchen Formularen das Feld sichtbar sein soll. Aktuell verfügbare Formulare für die Benutzerformulare im Shop: shopRegister, shopCheckout, shopPersonal, shopCheckoutAnonymous, shopCheckoutRegistration.Image Removed

...

JSON-Konfiguration
Codeblock
theme
languagejsRDark
titleJSON-Konfiguration
collapsetrue
{
  "whitelist": [
    "shopRegister",
    "shopCheckout",
    "shopPersonal"
  ]
}

Es können hier auch die schon bestehenden Felder der Kundendatensatz verändert, bzw konfiguriert werden. Dazu muss nur ein Formularfeld angelegt werden, welches das Zielfeld ersetzt und zu der Formlarmaske hinzugefügt wird. Auch dann greift die Konfiguration der Whitelist. So kann auch eine Sortierung der Felder im Formular erreicht werden oder die Feldeinschenkungen verändert werden.Image Removed

...

Konfiguration (shopOrder)

...

Beim erfolgreicher Bestellung bekommen wir neue Felder auch beim Bestellungsansicht & Bestellungsbestätigung E-Mail und in Delivery Invoice.Image Removed

...

Verwendung im Code

Whitelist Key

User-Engine Konstante

shopRegister

user\engine::FORM_KEY_REGISTER

shopCheckout

user\engine::FORM_KEY_CHECKOUT

shopPersonal

user\engine::FORM_KEY_PERSONAL

shopCheckoutAnonymous

user\engine::FORM_KEY_CHECKOUT_ANONYMOUS

shopCheckoutRegistration

user\engine::FORM_KEY_CHECKOUT_REGISTRATION

Beispiel: Formular "Mein Konto" "Persönliche Daten"

Codeblock
languagephp
themeRDark
$shopUser = $this->getUser();

$form = $this
  ->getEngineUser()
  ->mapUserToForm($shopUser, user\engine::FORM_KEY_PERSONAL)
;

$form->identification = $identification;
$form->formTag = true;
$form->links = $links;
$form->actions = $actions;
$form->notifications = $notificationBlocks;
$form->attributes = $attributes;

return $form;

Beispiel: Validierung "Persönliche Daten"

Codeblock
languagephpthemeRDark
use brandbox\component\mapping;
use brandbox\component\validator;

// .. class definition ...
use validator\validatorTrait;

// .. onSave -> $params = $httpParams ..
$shopUserEntity = $this
  ->getEngineUser()
  ->getShopUser()
;

$whitelistedFields = $this
  ->getEngineComponentForm()
  ->getListedColumnsByEntity($shopUserEntity, user\engine::FORM_KEY_PERSONAL)
;

// Important: Only allow whitelisted fields to be changed
$map = mapping\lib\map\mapEntityAdvanced::get($whitelistedFields);

/** @var user\lib\entity\shopUser $validationUser */
$validationUser = $this
  ->map()
  ->from($params)
  ->withMap($map)
  ->to($shopUserEntity)
;

return $this->validateValue(
  $validationUser,
  $this->getApplicationLanguage(),
  function() use ($params, $validationUser) {
    $this->updateUser($validationUser);
  }
);

Events

Interface: \brandbox\shop\user\lib\event\userFormEventInterface
Adapter: \brandbox\shop\user\lib\event\adapter\userFormEventAdapter

Methode

Eingabe

Rückgabe

Beschreibung

onPopulateFormEntity

$form: \brandbox\styleguide\brandbox\entity\form

$shopUser: \brandbox\shop\user\lib\entity\shopUser

$userFormKey: string

void

Bietet die Möglichkeit die Felder und die Benutzerformulare zu erweitern oder modifizieren. $userFormKey kann dazu verwendet werden, zu unterscheiden in welchem Formular das Event abgeschickt wurde. Siehe Whitelist Keys.

onRequestIgnoreViolations

$validationUser: \brandbox\shop\user\lib\entity\shopUser

$params: array

&$ignored: string[]

$userFormKey: string

void

Bietet die Möglichkeit columnIdentifiers zu definieren, deren Violation ignoriert werden darf.

Beispielweise könnte ein Kunde mit der Kundengruppe A nicht den Zwang haben einen Vornamen bei der Registrierung angeben zu müssen aber der Kunde mit der Gruppe B schon.

onUserFormSaveBefore

\brandbox\shop\user\lib\event\dto\dtoEventUpdateUser


void

Wird im Bestellprozess Schritt "Persönliche Daten" aufgerufen nachdem der Schritt validiert wurde, valide ist, die httpParameter auf shopSessionCheckout übertragen wurden, und bevor shopSessionCheckout gespeichert wird.

Wird beim Speichern der Benutzerformulare aufgerufen bevor der Benutzer gespeichert wird. Fallbeispiele: Benutzer registriert sich (user\engine::FORM_KEY_REGISTER), Benutzer ändert sein Daten im Bestellprozess (user\engine::FORM_KEY_CHECKOUT) oder unter mein Konto (user\engine::FORM_KEY_PERSONAL).

onUserFormSaveAfter

\brandbox\shop\user\lib\event\dto\dtoEventUpdateUser

void

Wird beim Speichern der Benutzerformulare aufgerufen nachdem nachdem onUserFormSaveBefore ausgeführt wurde und der Benutzer gespeichert wurde.

dtoEventUpdateUser

...