KEPLIN Docs

Validazione

Le due linee di difesa dei dati — ciò che il modello garantisce e le regole che i moduli delle schermate verificano prima di salvare.

I dati sbagliati entrano per distrazione, non per cattiveria: una partita IVA con otto cifre, un'email senza chiocciola, uno sconto del 300 %, un record salvato senza il campo di cui il resto del processo ha bisogno. Validare significa chiudere quelle porte — e in Keplin si chiudono su due livelli, che conviene non confondere.

Livello Dove si definisce Quando agisce Che cosa intercetta
Il modello Nell'editor della tabella (vedi Tabelle e campi) In qualsiasi scrittura, da dovunque arrivi Ciò che non può mai accadere ai dati.
Le regole dei campi Nell'inspector di ogni campo di modulo, categoria Validazione Quando l'utente salva un modulo Ciò che la persona sta scrivendo, con il messaggio giusto accanto al campo.

La regola pratica: ciò che è vero riguardo ai dati vive nel modello; ciò che è aiuto all'utente vive nel modulo. Un campo obbligatorio è entrambe le cose — si disattiva Consente NULL nel modello e si attiva Obbligatorio nel campo della schermata.

Che cosa garantisce il modello

Queste non sono "regole di validazione" con quel nome, ma sono l'unica difesa che non si aggira: valgono per le schermate, per le API, per gli script e per chi scrive direttamente nel database.

Elemento Che cosa impedisce
Consente NULL disattivato Un record senza valore in quella colonna.
Tipo della colonna Testo in un campo data, lettere in un numero.
Lunghezza / Precisione · Scala Testo più lungo della colonna, o denaro con troppi decimali.
Chiave primaria (PK) Record duplicati e record che non si riescono a identificare.
Indice unique Due clienti con la stessa partita IVA, due utenti con la stessa email.
Colonna di tipo enum Uno stato che non esiste nell'elenco.
Relazione fisica + Quando si elimina il padre Figli orfani, o eliminazioni che si portano via ciò che non dovrebbero.

La colonna estado nell'editor di struttura: il tipo, il Nome descrittivo (app) e l'interruttore Consente NULL sono la prima difesa dei dati.
La colonna estado nell'editor di struttura: il tipo, il Nome descrittivo (app) e l'interruttore Consente NULL sono la prima difesa dei dati.

Dica

Prima di scrivere una regola in un modulo, chiediti: questo può essere vero in qualche record, qualche volta? Se la risposta è no, il posto è il modello — perché il modulo è solo una delle porte da cui i dati entrano.

Le regole dei campi di modulo

Tutti i campi di modulo — Casella di testo, Area di testo, Numero, Sì/No, Dropdown, Data, Colore, File — hanno nell'inspector la categoria Validazione. È lì che si dichiara che cosa quel campo accetta.

Per arrivarci:

  1. Apri la schermata nel designer.
  2. Seleziona il campo — nel canvas, o dalla scheda Struttura dell' inspector.
  3. Nella scheda Proprietà, apri la categoria Validazione.

La categoria Validazione di una Casella di testo: Obbligatorio, Maschera, limiti di caratteri, Pattern (regex), Formato e Uguale al campo.
La categoria Validazione di una Casella di testo: Obbligatorio, Maschera, limiti di caratteri, Pattern (regex), Formato e Uguale al campo.

Obbligatorio

L'interruttore Obbligatorio è la prima e la più usata delle regole: il campo deve arrivare compilato. È anche l'unica che parla del vuoto — tutte le altre lasciano passare un campo vuoto, perché il vuoto è affare dell'Obbligatorio.

L'interruttore Obbligatorio del campo Telefono — la prima regola a girare, e l'unica che parla del vuoto.
L'interruttore Obbligatorio del campo Telefono — la prima regola a girare, e l'unica che parla del vuoto.

Le regole standard

A seconda del tipo di campo, la categoria mostra le regole che hanno senso:

Regola Dove appare Che cosa verifica
Maschera Casella di testo Il formato mentre si scrive: # cifra, A lettera, N alfanumerico, * qualsiasi — il resto è testo fisso. Es.: +39 ### ### ###.
Min caratteri Casella di testo, Area di testo Lunghezza minima del testo.
Max caratteri Casella di testo, Area di testo Lunghezza massima del testo.
Pattern (regex) Casella di testo, Area di testo Un'espressione regolare che il valore deve rispettare. Es.: ^[A-Z]{2}\d{4}$.
Formato Casella di testo Nessuno, È email, È telefono o È numero. Sono esclusivi: un valore non può essere email e telefono allo stesso tempo.
Valore min. Numero Il valore più basso accettato.
Valore max. Numero Il valore più alto accettato.
Uguale al campo Tutti i campi Il valore deve essere uguale a quello di un altro campo della schermata — la conferma della password, l'email ripetuta.

Nota

La Maschera è un aiuto alla scrittura, non è validazione: guida ciò che la persona scrive, ma chi garantisce il formato è il Pattern (regex) o il Formato. Un telefono con maschera può restare a metà.

Validazione tramite codice

Sotto le regole standard c'è la riga Convalida, che dice Nessuna convalida — definisci oppure Definita — modifica. Il pulsante apre un editor di codice per le regole che i campi non coprono: una partita IVA con cifra di controllo, un IBAN, una data che deve essere successiva a un'altra, una regola di business che ha solo la tua azienda.

Il codice riceve value — il valore attuale del campo — e restituisce:

  • true (o niente) se il valore è valido;
  • una string con il messaggio di errore da mostrare, se non lo è.
const s = String(value ?? "").replace(/\D/g, "");
if (s.length !== 9) return "La partita IVA deve avere 9 cifre";
return true;

Dentro questo codice hai a disposizione anche keplin — puoi confrontare con un altro campo, con un valore della sessione o con dati già caricati nella schermata. È TypeScript, con suggerimenti mentre scrivi (Ctrl+Spazio); l'editor rifiuta di salvare codice che non sia eseguibile.

L'editor della validazione tramite codice: riceve il valore del campo e restituisce true, oppure il messaggio di errore da mostrare.
L'editor della validazione tramite codice: riceve il valore del campo e restituisce true, oppure il messaggio di errore da mostrare.

Quando gira la validazione

La validazione di un modulo gira al salvataggio — quando il pulsante di salvataggio manda a salvare il datastore del record. L'ordine è sempre lo stesso, per campo:

  1. Obbligatorio — il campo è compilato?
  2. Le regole standard — lunghezza, formato, minimo, massimo, pattern, uguaglianza.
  3. La validazione tramite codice — la tua regola.

Il primo errore vince: appena una regola fallisce, è il messaggio di quella regola ad apparire sotto il campo e le successive non arrivano nemmeno a girare. Se un campo fallisce, non viene salvato nulla — il record resta com'era e la persona rimane nel modulo, con gli errori in vista.

Si può anche validare un campo a mano, dal codice di un evento — per esempio, per verificare un campo appena cambia invece di aspettare la fine. Questo è argomento di Eventi e SDK.

I messaggi

I messaggi delle regole standard sono quelli della piattaforma, scritti nella lingua dell'app: Campo obbligatorio., Email non valida., Minimo {min} caratteri., Valore massimo: {max}., I valori non coincidono., Formato non valido. Non si modificano uno a uno — se hai bisogno di dire le cose in un altro modo, il posto è la validazione tramite codice, dove il messaggio è la string che restituisci.

La lingua esce dalle impostazioni dell'app (Impostazioni dell'app ▸ Traduzioni): la stessa app in portoghese e in inglese mostra gli errori nella lingua di chi la sta usando.

Che cosa NON è la validazione

Atenção

La validazione di un modulo è comodità, non sicurezza. Gira nel browser di chi sta usando l'app e serve a evitare errori onesti. Chi vuole davvero scrivere un valore non valido non passa dal modulo — passa dall'API. La difesa vera è quella del modello (tipi, obbligatorietà, chiavi, indici univoci, enum) e quella dei permessi su chi può scrivere che cosa.

Perché no…?

  • Perché non vedo la categoria Validazione in questo widget? Solo i campi di modulo validano. Un Pulsante, un'Etichetta o una Tabella non hanno un valore da validare.
  • Perché la regola non scatta con il campo vuoto? È voluto: le regole standard ignorano il vuoto, che è il territorio dell'Obbligatorio. Attivalo.
  • Perché ha salvato lo stesso un record non valido? O il campo non era collegato al datastore (senza collegamento, non entra nella validazione), oppure il valore è stato scritto per un'altra via — un'API, uno script, un'importazione. Guarda che cosa il modello garantisce, più in alto in questa pagina.
  • Perché il Pattern (regex) non corrisponde? È un'espressione regolare nella sintassi consueta, e ogni carattere conta: ^[A-Z]{2}\d{4}$ accetta PT1234 e rifiuta pt1234. Prova l'espressione prima di incollarla.
  • Perché non ha salvato la mia validazione tramite codice? L'editor rifiuta codice che non sia eseguibile — correggi l'errore segnalato e salva di nuovo.
  • Perché il messaggio appare in inglese? La lingua dell'app è in inglese. Cambiala in Impostazioni dell'app ▸ Traduzioni.