public function FapiValidationValidatorsManager::validate in Form API Validation 8.2
Execute validation.
Parameters
array &$element: Form Element.
\Drupal\Core\Form\FormStateInterface &$form_state: Form State Object.
File
- src/
FapiValidationValidatorsManager.php, line 60
Class
- FapiValidationValidatorsManager
- A plugin manager for Fapi Validaton Validators Plugin.
Namespace
Drupal\fapi_validationCode
public function validate(array &$element, FormStateInterface &$form_state) {
// If element is empty and not required, by pass rule validation.
if (!$element['#required'] && empty($element['#value']) && $element['#value'] !== 0) {
return;
}
$def = $element['#validators'];
foreach ($def as $raw_validation) {
// Parse Validator.
$validator = new Validator($raw_validation, $form_state
->getValue($element['#parents']));
if (!$this
->hasValidator($validator
->getName())) {
// @TODO throw Validator not found
throw new \LogicException("Invalid validator name '{$validator->getName()}'.");
}
$plugin = $this
->getDefinition($validator
->getName());
$instance = $this
->createInstance($plugin['id']);
if (!$instance
->validate($validator, $element, $form_state)) {
$error_message = $this
->processErrorMessage($validator, $plugin, $element);
$form_state
->setError($element, $error_message);
}
}
}