public function validate($emptyOptional = FALSE)
{
$emptyOptional = $emptyOptional || $this->isOptional() && !$this->control->isFilled();
foreach ($this as $rule) {
if (!$rule->branch && $emptyOptional && $rule->validator !== Form::FILLED) {
continue;
}
$success = $this->validateRule($rule);
if ($success && $rule->branch && !$rule->branch->validate($rule->validator === Form::BLANK ? FALSE : $emptyOptional)) {
return FALSE;
} elseif (!$success && !$rule->branch) {
$rule->control->addError(Validator::formatMessage($rule, TRUE));
return FALSE;
}
}
return TRUE;
}