Skip to content

Commit

Permalink
Merge pull request #467 from creative-commoners/pulls/5/model-validation
Browse files Browse the repository at this point in the history
DOC Update model validation docs
  • Loading branch information
Maxime Rainville authored Apr 15, 2024
2 parents 4b6c686 + 8e8903c commit 2496b8f
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions en/02_Developer_Guides/00_Model/09_Validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ Validation using constraints that rely on `symfony/doctrine` is explicitly not s

## Model validation

Traditionally, validation in Silverstripe CMS has been mostly handled through [form validation](../forms).

While this is a useful approach, it can lead to data inconsistencies if the record is modified outside of the form context.
Traditionally, validation in Silverstripe CMS has been mostly handled through [form validation](../forms/validation). While this is a useful approach, it can lead to data inconsistencies if the record is modified outside of the form context.

Most validation constraints are actually data constraints which belong on the model. Silverstripe CMS provides the
[`DataObject::validate()`](api:SilverStripe\ORM\DataObject::validate()) method for this purpose. The `validate()` method is
Expand Down Expand Up @@ -69,7 +67,13 @@ class MyObject extends DataObject
{
$result = parent::validate();

if ($this->Country == 'DE' && $this->Postcode && strlen($this->Postcode) != 5) {
// This will add a field specific error to the ValidationResult
if (strlen($this->Postcode) > 10) {
$result->addFieldError('Postcode', 'Postcode is too long');
}

// This will add a general error to the ValidationResult
if ($this->Country == 'DE' && $this->Postcode && strlen($this->Postcode) !== 5) {
$result->addError('Need five digits for German postcodes');
}

Expand Down

0 comments on commit 2496b8f

Please sign in to comment.