Restriccions
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:
- Definir les regles estrictes a la vista per defecte — per exemple,
emailés obligatori i compleix un regex. - Sobreescriure per vista només quan calgui — per exemple, fer un camp de sistema només-lectura i amagat a
createperò visible i només-lectura aupdate.
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.