Aggiornamento condizionale del campo
A partir de NexoPOS 5.3.x, alcuni campi come “select”, “multiselect” e “search-select” saranno soggetti ad aggiornare in modo condizionale le opzioni in base ai valori dei rispettivi elementi fratelli.
L’idea qui è offrire sempre al utente scelte accurate in base a una scelta precedente che ha effettuato. Consideriamo di avere un modulo con 2 campi di selezione. Il primo campo di selezione elenca tutti i paesi e il secondo campo di selezione elenca le città del paese. Ha più senso se le opzioni del secondo campo di selezione vengono aggiornate per corrispondere al paese selezionato nel primo campo.
Impostazione del campo
Per consentire a un campo di monitorare le modifiche di altri campi e aggiornare le proprie opzioni, è necessario fornire al campo alcune opzioni aggiuntive lato backend.
<?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
);
Nell’esempio precedente, il primo campo è “country” e il secondo è “town”. Nel secondo campo, forniremo l’opzione “refresh”, per la quale useremo FormInput::refreshConfig. Questa funzione restituisce un array con “url” e “watch”.
url: Questo è l’URL da utilizzare per recuperare le nuove opzioni. Nota che NexoPOS eseguirà una richiesta POST a quell’URL con solo l’input “identifier”, che è il valore selezionato nel campo “watch” (nel nostro esempio, è il paese).
watch: Questo è il nome del campo da monitorare. In caso di qualsiasi modifica apportata a tale campo, verranno notificati tutti i campi che definiscono una proprietà di "refresh".
Valore restituito
Poiché NexoPOS richiede l’URL fornito, tale URL deve restituire una risposta valida affinché funzioni. L’input che l’osservatore delle modifiche si aspetta come risposta è un elenco di opzioni in un array. Utilizza “Helper::toJsOptions” per convertire una raccolta di modelli in un array JavaScript valido che NexoPOS possa comprendere.
Questo è un esempio dell’output previsto da NexoPOS.