You are here

public static function ViewsReferenceTrait::itemResetValues in Views Reference Field 8.2

Clears dependent form values when the view id changes.

Implemented as an #after_build callback because #after_build runs before validation, allowing the values to be cleared early enough to prevent the "Illegal choice" error.

File

src/Plugin/Field/FieldWidget/ViewsReferenceTrait.php, line 258

Class

ViewsReferenceTrait
Trait for shared code in Viewsreference Field Widgets.

Namespace

Drupal\viewsreference\Plugin\Field\FieldWidget

Code

public static function itemResetValues(array $element, FormStateInterface $form_state) {
  $triggering_element = $form_state
    ->getTriggeringElement();
  if (!$triggering_element) {
    return $element;
  }
  $keys = [
    'target_id' => [
      'display_id',
    ],
  ];
  $triggering_element_name = end($triggering_element['#parents']);
  if (isset($keys[$triggering_element_name])) {
    $input =& $form_state
      ->getUserInput();
    foreach ($keys[$triggering_element_name] as $key) {
      $parents = array_merge($element['#parents'], [
        $key,
      ]);
      NestedArray::setValue($input, $parents, '');
      $element[$key]['#value'] = '';
    }
  }
  return $element;
}