public static function CshsElement::validateElement in Client-side Hierarchical Select 8.2
Same name and namespace in other branches
- 8.3 src/Element/CshsElement.php \Drupal\cshs\Element\CshsElement::validateElement()
- 8 src/Element/CshsElement.php \Drupal\cshs\Element\CshsElement::validateElement()
File
- src/Element/CshsElement.php, line 109
Class
- CshsElement
- Defines the CSHS element.
Namespace
Drupal\cshs\Element
Code
public static function validateElement(array &$element, FormStateInterface $form_state) : void {
$term_id = $element['#value'];
if (\is_array($term_id)) {
$term_id = \end($term_id);
}
if (empty($term_id) || $term_id == $element['#none_value']) {
$form_state
->setValueForElement($element, \is_a($form_state
->getFormObject(), ViewsExposedForm::class) ? $element['#none_value'] : NULL);
if ($element['#required']) {
$form_state
->setError($element, \t('@label field is required.', [
'@label' => $element['#label'],
]));
}
}
elseif ($element['#force_deepest']) {
$storage = static::getTermStorage();
if (!$storage
->load($term_id)) {
$form_state
->setError($element, \t('Unable to load a term (ID: @id) for the @label field.', [
'@id' => $element['#value'],
'@label' => $element['#label'],
]));
}
elseif (!empty($storage
->loadChildren($term_id))) {
$form_state
->setError($element, \t('You need to select a term from the deepest level in @label field.', [
'@label' => $element['#label'],
]));
}
}
elseif ($element['#required_depth'] > 0) {
$storage = static::getTermStorage();
if (\count($storage
->loadAllParents($term_id)) < $element['#required_depth']) {
$form_state
->setError($element, \t('The field @label requires you to select at least @level levels of hierarchy.', [
'@label' => $element['#label'],
'@level' => $element['#required_depth'],
]));
}
}
}