You are here

public static function GeolocationGpxFileWidget::submit in Geolocation Field 8.3

Form submission handler for upload/remove button of formElement().

This runs in addition to and after file_managed_file_submit().

Overrides FileWidget::submit

See also

file_managed_file_submit()

File

modules/geolocation_gpx/src/Plugin/Field/FieldWidget/GeolocationGpxFileWidget.php, line 26

Class

GeolocationGpxFileWidget
Plugin implementation of the 'geolocation_gpx_file' widget.

Namespace

Drupal\geolocation_gpx\Plugin\Field\FieldWidget

Code

public static function submit($form, FormStateInterface $form_state) {
  parent::submit($form, $form_state);

  // During the form rebuild, formElement() will create field item widget
  // elements using re-indexed deltas, so clear out FormState::$input to
  // avoid a mismatch between old and new deltas. The rebuilt elements will
  // have #default_value set appropriately for the current state of the field,
  // so nothing is lost in doing this.
  $button = $form_state
    ->getTriggeringElement();
  $parents = array_slice($button['#parents'], 0, -2);
  NestedArray::setValue($form_state
    ->getUserInput(), $parents, NULL);
  $submitted_values = NestedArray::getValue($form_state
    ->getValues(), array_slice($button['#parents'], 0, -2));
  foreach ($submitted_values as $delta => $submitted_value) {
    foreach ($submitted_value['fids'] as $fid) {

      /** @var \Drupal\file\FileInterface $file */
      $file = File::load($fid);
      $file
        ->setPermanent();
      $file
        ->save();
    }
  }
}