public static function CshsElement::validateElement in Client-side Hierarchical Select 8        
                          
                  
                        Same name and namespace in other branches
- 8.3 src/Element/CshsElement.php \Drupal\cshs\Element\CshsElement::validateElement()
- 8.2 src/Element/CshsElement.php \Drupal\cshs\Element\CshsElement::validateElement()
File
 
   - src/Element/CshsElement.php, line 84
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'],
      ]));
    }
  }
}