Una restricció és una regla associada a una propietat d'un model. Les restriccions tenen dues finalitats: indiquen a Yellow com mostrar la propietat als formularis i taules, i li diuen quins valors són vàlids quan es desa una instància.

Les restriccions viuen dins d'una vista, de manera que una mateixa propietat pot tenir regles diferents per al formulari de creació, el d'edició, el llistat en taula, etc. Quan una vista no defineix una restricció concreta, Yellow cau a la vista per defecte.

Restriccions de visualització

Cada propietat porta una restricció de visualització. Controla el layout, no els valors.

Camp Què fa
visible Si la propietat apareix al formulari o a la taula.
order La posició de la propietat entre els seus germans.
readonly Desactiva l'edició però continua mostrant el valor.
flex Pista d'amplada: quant espai horitzontal ocupa la propietat dins la seva fila.
group Etiqueta opcional de secció per agrupar propietats relacionades.

Les restriccions de visualització són les que la majoria d'usuaris ajusten cada dia: amagar camps d'auditoria al formulari de creació, reordenar columnes a la vista de taula, marcar camps calculats com a només-lectura a l'edició, etc.

Restriccions de valor

A banda de la visualització, Yellow inclou restriccions tipades que validen el valor en si mateix. El tipus disponible depèn del tipus de la propietat:

Restriccions de text

Per a propietats de tipus text.

  • Required — el camp no pot estar buit.
  • Longitud mínima / Longitud màxima — límits de caràcters.
  • Línies mínimes / Línies màximes — per a text multilínia.
  • Expressió regular — un patró regex que el valor ha de complir.
  • Mail — quan està actiu, el valor ha de ser una adreça de correu electrònic ben formada.
  • Edit widget — escull l'editor utilitzat al formulari (entrada d'una sola línia, àrea de text, correu, etc.).

Restriccions d'enter

Per a propietats numèriques senceres.

  • Required — el camp no pot estar buit.
  • Mínim / Màxim — límits numèrics (inclosos).
  • Enumeració — limita el valor a una llista d'elements predefinits, mostrats com a desplegable.

Restriccions de datetime

Per a propietats de data i hora.

  • Required — el camp no pot estar buit.
  • Mode de visualització — si el selector mostra només data, només hora, o totes dues coses.

Restriccions de referència a instància

Per a propietats que apunten a una altra instància.

  • Required — la referència no pot estar buida.
  • Model objectiu — el model al qual ha d'apuntar la referència.
  • Owned — quan és cert, la instància referenciada és propietat (composició): si esborres el pare s'esborra també el fill. Quan és fals, és una referència simple.
  • Filtre — una expressió de filtre dinàmica que limita les instàncies candidates mostrades a l'usuari.

Restriccions de col·lecció

Per a propietats que contenen una col·lecció d'elements.

  • Recompte mínim / Recompte màxim — límits del nombre d'elements.
  • Model objectiu — el model dels elements de la col·lecció.
  • Tipus d'element — quin tipus d'element conté la col·lecció (referència a instància, a propietat, etc.).

Restriccions per vista

Una restricció tipada es pot definir globalment (a la vista per defecte) o per vista (per exemple, només a create). El patró més habitual és:

  1. Definir les regles estrictes a la vista per defecte — per exemple, email és obligatori i compleix un regex.
  2. Sobreescriure per vista només quan calgui — per exemple, fer un camp de sistema només-lectura i amagat a create però visible i només-lectura a update.

Si una vista no defineix una restricció tipada per a una propietat, Yellow utilitza la de la vista per defecte. Si la vista per defecte tampoc no en té, no s'aplica cap validació més enllà del que ja garanteix el tipus.

On editar les restriccions

Obre el model des de l'Explorador. A l'editor de propietats, escull una vista al selector de Vistes i clica una propietat per editar-ne la restricció de visualització i (si està disponible) la restricció tipada. Desa per publicar els canvis; els formularis d'instàncies de tota l'aplicació adopten les noves regles immediatament.