3.x dataobject input validation

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'
        ));
    }