SS Version: 3.7.1
How does SilverStripe built in model validation work?
The validation method described in the developer guide doesn’t seem to care if the field has been filled in or not: Form Validation – SilverStripe Documentation
public function getCMSValidator() {
return new RequiredFields(array(
'MyRequiredField'
));
}