Ik doe wat form validatie met Seaside en de nieuwe JQuery integratie. De validatie code doe ik in het model. Ik heb een beetje gekeken naar hoe het in Rails gebeurd, maar daar worden alle validaties in een keer uitgevoerd. Het idee om JQuery te gebruiken is natuurlijk om per veld de validatie te kunnen doen en dan meteen feedback aan de gebruiker te kunnen geven bij het verlaten van het veld.

De validatie code laat ik nu dan triggeren in de setter van het veld.
1
2
3
4
5
|
emailBevestiging: value
emailBevestiging := value.
self valideer: #emailBevestiging. |
Ik heb map gemaakt van veldnamen met validatieregels. De validatie regels zijn gewoon code blocks die aangeroepen worden door de valideer routine. Het is nog niet echt een DSL, waar met een beetje wil kan een niet programmeur wel de validatie regels erin begrijpen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| loadValidationRules
self
addRuleFor: #emailBevestiging
with: [:veld :feedback |
veld bevatGeldigeEmailadres
ifFalse: [feedback value: 'Email adres bevestiging is ongeldig'.^].
veld = email
ifFalse: [feedback value: 'Email adres bevestiging is niet gelijk aan email'.^]].
self
addRuleFor: #email
with: [:veld :feedback |
veld bevatGeldigeEmailadres ifFalse: [feedback value: 'Email adres is ongeldig']] |
Ik had de validatie regels eerst in aparte validatie methodes per veld, maar vind de rails manier waar je alle validaties bij elkaar bovenaan je class hebt staan wat prettiger. Ik heb nu een wat lange methode waarin ik alle validatieregels bij elkaar heb staan.