Bedingtes Feld-Refresh
Ab NexoPOS 5.3.x unterliegen bestimmte Felder wie „select“, „multiselect“ und „search-select“ einer bedingten Aktualisierung ihrer Optionen basierend auf den Werten ihrer Geschwister.
Die Idee hier ist, dem Nutzer stets genaue Auswahlmöglichkeiten basierend auf einer früheren Auswahl bereitzustellen. Nehmen wir an, Sie haben ein Formular mit zwei Auswahlfeldern. Das erste Auswahlfeld listet alle Länder auf, und das zweite Auswahlfeld listet Städte im jeweiligen Land auf. Es ergibt mehr Sinn, wenn die Optionen im zweiten Auswahlfeld so aktualisiert werden, dass sie mit dem im ersten Feld ausgewählten Land übereinstimmen.
Feld einrichten
Damit ein Feld andere Felder überwachen und deren Änderungen übernehmen sowie seine Optionen aktualisieren kann, müssen Sie dem Feld auf der Backend-Seite einige zusätzliche Optionen bereitstellen.
<?php
use App\Classes\FormInput;
// ...
$country = FormInput::searchSelect(
label: __( 'Countries' ),
name: 'country',
);
$town = FormInput::searchSelect(
label: __( 'Town' ),
name: 'town',
refresh: FormInput::refreshConfig(
url: '', // url to fetch new options
watch: 'country', // the name of the field to watch changes
);
Im obigen Beispiel ist das erste Feld „country“ und das zweite „town“. Im zweiten Feld stellen wir die Option „refresh“ bereit, für die wir FormInput::refreshConfig verwenden. Diese Funktion gibt ein Array mit „url“ und „watch“ zurück.
URL: Dies ist die URL, die zum Abrufen der neuen Optionen verwendet werden soll. Beachten Sie, dass NexoPOS eine POST-Anfrage an diese URL mit nur dem Eingabetext „identifier“ ausführt, wobei es sich um den Wert handelt, der im Feld „watch“ ausgewählt wurde (in unserem Beispiel ist das das Land).
watch: Dies ist der Name des zu überwachenden Felds. Bei jeder Änderung, die in diesem Feld vorgenommen wird, werden alle Felder benachrichtigt, die eine „Refresh“-Eigenschaft definieren.
Rückgabewert
Da NexoPOS die angegebene URL aufruft, muss diese URL eine gültige Antwort liefern, damit sie funktioniert. Die Eingabe, die „watch changes“ als Antwort erwartet, ist eine Liste von Optionen in einem Array. Verwenden Sie „Helper::toJsOptions“, um eine Sammlung von Modellen in ein gültiges JavaScript-Array umzuwandeln, das NexoPOS verstehen kann.
Dies ist ein Beispiel für die von NexoPOS erwartete Ausgabe.