KEPLIN Docs

Validering

Dataenes to forsvarslinjer — det modellen garanterer, og reglene skjemaene på skjermene kontrollerer før de lagrer.

Feil data kommer inn av uoppmerksomhet, ikke av ondskap: et organisasjonsnummer med åtte sifre, en e-post uten krøllalfa, en rabatt på 300 %, en post lagret uten feltet resten av prosessen trenger. Å validere er å lukke de dørene — og i Keplin lukkes de i to lag, som det er greit å ikke blande sammen.

Lag Hvor det defineres Når det virker Hva det fanger
Modellen I tabelleditoren (se Tabeller og felt) Ved enhver skriving, uansett hvor den kommer fra Det som aldri kan skje med dataene.
Feltreglene I inspektøren for hvert skjemafelt, kategorien Validering Når brukeren lagrer et skjema Det personen holder på å skrive, med riktig melding ved siden av feltet.

Tommelfingerregelen: det som er sant om dataene lever i modellen; det som er hjelp til brukeren lever i skjemaet. Et påkrevd felt er begge deler — du slår av Tillat NULL i modellen og slår på Påkrevd i feltet på skjermen.

Hva modellen garanterer

Dette heter ikke «valideringsregler», men det er det eneste forsvaret som ikke lar seg gå rundt: det gjelder for skjermene, for API-ene, for skriptene og for den som skriver direkte i databasen.

Del Hva den hindrer
Tillat NULL slått av En post uten verdi i den kolonnen.
Type på kolonnen Tekst i et datofelt, bokstaver i et tall.
Lengde / Presisjon · Skala Tekst som er lengre enn kolonnen, eller penger med for mange desimaler.
Primærnøkkel (PK) Dupliserte poster og poster som ikke lar seg identifisere.
unique-indeks To kunder med samme organisasjonsnummer, to brukere med samme e-post.
Kolonne av typen enum En status som ikke finnes i listen.
Fysisk relasjon + Når forelderen slettes Foreldreløse barn, eller slettinger som drar med seg det de ikke skal.

Kolonnen estado i strukturredigereren: typen, Visningsnavn (apper) og bryteren Tillat NULL er dataenes første forsvar.
Kolonnen estado i strukturredigereren: typen, Visningsnavn (apper) og bryteren Tillat NULL er dataenes første forsvar.

Dica

Før du skriver en regel i et skjema, spør deg: kan dette være sant i noen post, noen gang? Er svaret nei, er stedet modellen — for skjemaet er bare én av dørene dataene kommer inn gjennom.

Reglene for skjemafeltene

Alle skjemafelt — Tekstfelt, Tekstområde, Tall, Ja/nei, Nedtrekksliste, Dato, Farge, Filopplasting — har kategorien Validering i inspektøren. Det er der du erklærer hva det feltet godtar.

Slik kommer du dit:

  1. Åpne skjermen i designeren.
  2. Velg feltet — på lerretet, eller via fanen Struktur i inspektøren.
  3. I fanen Egenskaper åpner du kategorien Validering.

Kategorien Validering på et Tekstfelt: Påkrevd, Maske, tegngrenser, Mønster (regex), Format og Lik feltet.
Kategorien Validering på et Tekstfelt: Påkrevd, Maske, tegngrenser, Mønster (regex), Format og Lik feltet.

Påkrevd

Bryteren Påkrevd er den første og mest brukte av reglene: feltet må være fylt ut. Den er også den eneste som handler om det tomme — alle de andre slipper et tomt felt gjennom, fordi det tomme er Påkrevd sitt anliggende.

Bryteren Påkrevd på feltet Telefone — den første regelen som kjører, og den eneste som handler om det tomme.
Bryteren Påkrevd på feltet Telefone — den første regelen som kjører, og den eneste som handler om det tomme.

Standardreglene

Alt etter felttypen viser kategorien de reglene som gir mening:

Regel Hvor den dukker opp Hva den kontrollerer
Maske Tekstfelt Formatet mens du skriver: # siffer, A bokstav, N alfanumerisk, * hva som helst — resten er fast tekst. Eks.: +351 ### ### ###.
Min. tegn Tekstfelt, Tekstområde Minste lengde på teksten.
Maks. tegn Tekstfelt, Tekstområde Største lengde på teksten.
Mønster (regex) Tekstfelt, Tekstområde Et regulært uttrykk verdien må oppfylle. Eks.: ^[A-Z]{2}\d{4}$.
Format Tekstfelt Ingen, Er e-post, Er telefonnummer eller Er tall. De utelukker hverandre: en verdi kan ikke være e-post og telefonnummer samtidig.
Minverdi Tall Den minste verdien som godtas.
Maksverdi Tall Den største verdien som godtas.
Lik feltet Alle felt Verdien må være lik den i et annet felt på skjermen — passordbekreftelsen, den gjentatte e-posten.

Nota

Maske er skrivehjelp, ikke validering: den styrer det personen skriver, men den som garanterer formatet er Mønster (regex) eller Format. Et telefonnummer med maske kan bli stående halvferdig.

Validering med kode

Under standardreglene står linjen Validering, som sier Ingen validering — angi eller Angitt — rediger. Knappen åpner en kodeeditor for reglene feltene ikke dekker: et organisasjonsnummer med kontrollsiffer, et IBAN, en dato som må være senere enn en annen, en forretningsregel bare din bedrift har.

Koden får value — den nåværende verdien i feltet — og returnerer:

  • true (eller ingenting) hvis verdien er gyldig;
  • en streng med feilmeldingen som skal vises, hvis den ikke er det.
const s = String(value ?? "").replace(/\D/g, "");
if (s.length !== 9) return "Organisasjonsnummeret må ha 9 sifre";
return true;

Inne i denne koden har du også keplin tilgjengelig — du kan sammenligne med et annet felt, med en verdi fra økten eller med data som allerede er lastet inn på skjermen. Det er TypeScript, med forslag mens du skriver (Ctrl+Mellomrom); editoren nekter å lagre kode som ikke lar seg kjøre.

Editoren for validering med kode: den får verdien i feltet og returnerer true, eller feilmeldingen som skal vises.
Editoren for validering med kode: den får verdien i feltet og returnerer true, eller feilmeldingen som skal vises.

Når valideringen kjører

Valideringen av et skjema kjører ved lagring — når lagreknappen ber datastoren for posten om å lagre. Rekkefølgen er alltid den samme, per felt:

  1. Påkrevd — er feltet fylt ut?
  2. Standardreglene — lengde, format, minimum, maksimum, mønster, likhet.
  3. Valideringen med kode — din egen regel.

Den første feilen vinner: så snart en regel feiler, er det meldingen fra den regelen som dukker opp under feltet, og de neste rekker ikke å kjøre. Feiler et felt, lagres ingenting — posten blir stående som den var, og personen blir værende i skjemaet, med feilene synlige.

Du kan også validere et felt for hånd, fra koden i en hendelse — for eksempel for å kontrollere et felt så snart det endrer seg i stedet for å vente til slutt. Det er temaet i Hendelser og SDK-et.

Meldingene

Meldingene fra standardreglene er plattformens egne, skrevet på appens språk: Påkrevd felt., Ugyldig e-post., Minst {min} tegn., Maksverdi: {max}., Verdiene stemmer ikke overens., Ugyldig format. De redigeres ikke én for én — trenger du å si tingene på en annen måte, er stedet validering med kode, der meldingen er strengen du returnerer.

Språket kommer fra appens innstillinger (Appinnstillinger ▸ Oversettelser): den samme appen på norsk og på engelsk viser feilene på språket til den som bruker den.

Hva validering IKKE er

Atenção

Validering av et skjema er bekvemmelighet, ikke sikkerhet. Den kjører i nettleseren til den som bruker appen og er der for å unngå ærlige feil. Den som virkelig vil skrive en ugyldig verdi går ikke via skjemaet — han går via API-et. Det ordentlige forsvaret er modellens (typer, påkrevde felt, nøkler, unike indekser, enums) og tillatelsene for hvem som får skrive hva.

Hvorfor ikke…?

  • Hvorfor ser jeg ikke kategorien Validering i denne widgeten? Bare skjemafelt validerer. En Knapp, en Etikett eller en Tabell har ingen verdi å validere.
  • Hvorfor utløses ikke regelen når feltet er tomt? Det er med vilje: standardreglene ignorerer det tomme, som er Påkrevd sitt område. Slå den på.
  • Hvorfor ble en ugyldig post lagret likevel? Enten var feltet ikke koblet til datastoren (uten binding kommer det ikke med i valideringen), eller så ble verdien skrevet en annen vei — et API, et skript, en import. Se hva modellen garanterer, øverst på denne siden.
  • Hvorfor treffer ikke Mønster (regex)? Det er et regulært uttrykk i vanlig syntaks, og hvert tegn teller: ^[A-Z]{2}\d{4}$ godtar PT1234 og nekter pt1234. Test uttrykket før du limer det inn.
  • Hvorfor ble ikke valideringen min med kode lagret? Editoren nekter kode som ikke lar seg kjøre — rett den markerte feilen og lagre på nytt.
  • Hvorfor dukker meldingen opp på engelsk? Appens språk er engelsk. Endre det under Appinnstillinger ▸ Oversettelser.