KEPLIN Docs

Validering

Datas två försvarslinjer — vad modellen garanterar och de regler som skärmarnas formulär kontrollerar innan de sparar.

Felaktiga data kommer in av slarv, inte av illvilja: ett organisationsnummer med åtta siffror, en e-postadress utan snabel-a, en rabatt på 300 %, en post sparad utan det fält som resten av processen behöver. Att validera är att stänga de dörrarna — och i Keplin stängs de i två lager, som det är bra att inte blanda ihop.

Lager Var det anges När det verkar Vad det fångar
Modellen I tabelleditorn (se Tabeller och fält) Vid varje skrivning, varifrån den än kommer Det som aldrig får hända med data.
Fältreglerna I inspektorn för varje formulärfält, kategorin Validering När användaren sparar ett formulär Det som personen håller på att skriva, med rätt meddelande bredvid fältet.

Tumregeln: det som är sant om data lever i modellen; det som är hjälp till användaren lever i formuläret. Ett obligatoriskt fält är båda delarna — du stänger av Tillåter NULL i modellen och slår på Obligatoriskt på skärmens fält.

Vad modellen garanterar

Det här är inte ”valideringsregler” under det namnet, men de är det enda försvar som inte går att gå runt: de gäller för skärmarna, för API:erna, för skripten och för den som skriver direkt i databasen.

Del Vad den hindrar
Tillåter NULL avslaget En post utan värde i den kolumnen.
Kolumnens Typ Text i ett datumfält, bokstäver i ett tal.
Längd / Precision · Skala Text längre än kolumnen, eller pengar med för många decimaler.
Primärnyckel (PK) Dubblerade poster och poster som inte går att identifiera.
Index med unique Två kunder med samma organisationsnummer, två användare med samma e-postadress.
Kolumn av typen enum En status som inte finns i listan.
Fysisk relation + När föräldern tas bort Föräldralösa barn, eller borttagningar som drar med sig det de inte ska.

Kolumnen estado i strukturredigeraren: typen, Visningsnamn (appar) och reglaget Tillåter NULL är datas första försvar.
Kolumnen estado i strukturredigeraren: typen, Visningsnamn (appar) och reglaget Tillåter NULL är datas första försvar.

Dica

Innan du skriver en regel i ett formulär, fråga dig: kan det här vara sant i någon post, någon gång? Om svaret är nej hör det hemma i modellen — för formuläret är bara en av dörrarna som data kommer in genom.

Formulärfältens regler

Alla formulärfält — Textruta, Textområde, Tal, Ja/Nej, Listruta, Datum, Färg, Fil — har kategorin Validering i inspektorn. Det är där du deklarerar vad fältet accepterar.

Så här tar du dig dit:

  1. Öppna skärmen i designern.
  2. Välj fältet — på canvasen, eller via inspektorns flik Struktur.
  3. Öppna kategorin Validering i fliken Egenskaper.

Kategorin Validering på en Textruta: Obligatoriskt, Mask, teckengränser, Mönster (regex), Format och Lika med fältet.
Kategorin Validering på en Textruta: Obligatoriskt, Mask, teckengränser, Mönster (regex), Format och Lika med fältet.

Obligatoriskt

Reglaget Obligatoriskt är den första och mest använda av reglerna: fältet måste vara ifyllt. Det är också den enda som talar om det tomma — alla de andra släpper igenom ett tomt fält, eftersom det tomma är Obligatoriskt-reglagets sak.

Reglaget Obligatoriskt på fältet Telefone — den första regeln som körs, och den enda som talar om det tomma.
Reglaget Obligatoriskt på fältet Telefone — den första regeln som körs, och den enda som talar om det tomma.

Standardreglerna

Beroende på fälttypen visar kategorin de regler som är meningsfulla:

Regel Var den finns Vad den kontrollerar
Mask Textruta Formatet medan man skriver: # siffra, A bokstav, N alfanumeriskt, * vad som helst — resten är fast text. Ex.: +351 ### ### ###.
Min tecken Textruta, Textområde Textens minsta längd.
Max tecken Textruta, Textområde Textens största längd.
Mönster (regex) Textruta, Textområde Ett reguljärt uttryck som värdet måste uppfylla. Ex.: ^[A-Z]{2}\d{4}$.
Format Textruta Inget, Är e-post, Är telefonnummer eller Är tal. De är ömsesidigt uteslutande: ett värde kan inte vara e-post och telefonnummer samtidigt.
Min värde Tal Det lägsta värde som accepteras.
Max värde Tal Det högsta värde som accepteras.
Lika med fältet Alla fält Värdet måste vara lika med ett annat fälts värde på skärmen — lösenordsbekräftelsen, den upprepade e-postadressen.

Nota

Mask är skrivhjälp, inte validering: den styr vad personen skriver, men det är Mönster (regex) eller Format som garanterar formatet. Ett telefonnummer med mask kan bli halvfärdigt.

Validering med kod

Under standardreglerna ligger raden Validering, som säger Ingen validering — ange eller Angiven — redigera. Knappen öppnar en kodredigerare för de regler som fälten inte täcker: ett organisationsnummer med kontrollsiffra, ett IBAN, ett datum som måste ligga efter ett annat, en affärsregel som bara ditt företag har.

Koden tar emot value — fältets aktuella värde — och returnerar:

  • true (eller ingenting) om värdet är giltigt;
  • en sträng med felmeddelandet som ska visas, om det inte är det.
const s = String(value ?? "").replace(/\D/g, "");
if (s.length !== 9) return "Organisationsnumret måste ha 9 siffror";
return true;

Inuti den här koden har du också keplin tillgängligt — du kan jämföra med ett annat fält, med ett värde från sessionen eller med data som redan laddats på skärmen. Det är TypeScript, med förslag medan du skriver (Ctrl+Blanksteg); redigeraren vägrar spara kod som inte går att köra.

Redigeraren för validering med kod: den tar emot fältets värde och returnerar true, eller felmeddelandet som ska visas.
Redigeraren för validering med kod: den tar emot fältets värde och returnerar true, eller felmeddelandet som ska visas.

När valideringen körs

Ett formulärs validering körs vid sparning — när sparknappen ber postens datastore att spara. Ordningen är alltid densamma, per fält:

  1. Obligatoriskt — är fältet ifyllt?
  2. Standardreglerna — längd, format, minimum, maximum, mönster, likhet.
  3. Valideringen med kod — din regel.

Första felet vinner: så snart en regel faller är det den regelns meddelande som visas under fältet, och de följande hinner inte köras. Om något fält faller sparas ingenting — posten blir som den var och personen stannar kvar i formuläret, med felen framme.

Man kan också validera ett fält för hand, från koden i en händelse — till exempel för att kontrollera ett fält så snart det ändras i stället för att vänta till slutet. Det är ett ämne för Händelser och SDK:t.

Meddelandena

Standardreglernas meddelanden är plattformens, skrivna på appens språk: Obligatoriskt fält., Ogiltig e-postadress., Minst {min} tecken., Högsta värde: {max}., Värdena stämmer inte överens., Ogiltigt format. De redigeras inte ett och ett — om du behöver säga saker på ett annat sätt hör det hemma i valideringen med kod, där meddelandet är strängen du returnerar.

Språket kommer från appens inställningar (Appens inställningar ▸ Översättningar): samma app på svenska och på engelska visar felen på språket hos den som använder den.

Vad validering INTE är

Atenção

Ett formulärs validering är bekvämlighet, inte säkerhet. Den körs i webbläsaren hos den som använder appen och tjänar till att undvika ärliga misstag. Den som verkligen vill skriva ett ogiltigt värde går inte via formuläret — den går via API:et. Det riktiga försvaret är modellens (typer, obligatoriska fält, nycklar, unika index, enums) och behörigheterna för vem som får skriva vad.

Varför inte…?

  • Varför ser jag inte kategorin Validering i den här widgeten? Bara formulärfält validerar. En Knapp, en Etikett eller en Tabell har inget värde att validera.
  • Varför utlöses inte regeln när fältet är tomt? Det är med flit: standardreglerna ignorerar det tomma, som är Obligatoriskt-reglagets område. Slå på det.
  • Varför sparades en ogiltig post ändå? Antingen var fältet inte bundet till datastoren (utan bindning ingår det inte i valideringen), eller så skrevs värdet in en annan väg — ett API, ett skript, en import. Se vad modellen garanterar, längre upp på den här sidan.
  • Varför slår Mönster (regex) inte till? Det är ett reguljärt uttryck med den vanliga syntaxen, och varje tecken räknas: ^[A-Z]{2}\d{4}$ accepterar PT1234 och vägrar pt1234. Testa uttrycket innan du klistrar in det.
  • Varför sparades inte min validering med kod? Redigeraren vägrar kod som inte går att köra — rätta det markerade felet och spara igen.
  • Varför visas meddelandet på engelska? Appens språk är engelska. Ändra det under Appens inställningar ▸ Översättningar.