You are here

public static function PatternSettingTypeBase::validateLayout in UI Patterns Settings 8.2

Check required input fields in layout forms.

Parameters

array $element: The element to validate.

\Drupal\Core\Form\FormStateInterface $form_state: The form state.

array $form: The form.

File

src/Plugin/PatternSettingTypeBase.php, line 247

Class

PatternSettingTypeBase
Base class for UI Patterns Setting plugins.

Namespace

Drupal\ui_patterns_settings\Plugin

Code

public static function validateLayout(array $element, FormStateInterface &$form_state, array &$form) {
  $parents = $element['#parents'];
  $value = $form_state
    ->getValue($parents);
  $parents[count($parents) - 1] = $parents[count($parents) - 1] . '_token';
  $token_value = $form_state
    ->getValue($parents);
  if (empty($value) && empty($token_value)) {

    // Check if a variant is selected and the value
    // is provided by the variant.
    $variant = $form_state
      ->getValue([
      'layout_configuration',
      'pattern',
      'variant',
    ]);
    if (!empty($variant)) {
      $variant_def = $element['#pattern_definition']
        ->getVariant($variant);
      $variant_ary = $variant_def
        ->toArray();
      if (!empty($variant_ary['settings'][$element['#pattern_setting_definition']
        ->getName()])) {
        return;
      }
    }
    $form_state
      ->setError($element, t('@name field is required.', [
      '@name' => $element['#title'],
    ]));
  }
}