You are here

public function FileUploadForm::processUploadElement in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/media_library/src/Form/FileUploadForm.php \Drupal\media_library\Form\FileUploadForm::processUploadElement()

Processes an upload (managed_file) element.

Parameters

array $element: The upload element.

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

Return value

array The processed upload element.

File

core/modules/media_library/src/Form/FileUploadForm.php, line 216

Class

FileUploadForm
Creates a form to create media entities from uploaded files.

Namespace

Drupal\media_library\Form

Code

public function processUploadElement(array $element, FormStateInterface $form_state) {
  $element['upload_button']['#submit'] = [
    '::uploadButtonSubmit',
  ];

  // Limit the validation errors to make sure
  // FormValidator::handleErrorsWithLimitedValidation doesn't remove the
  // current selection from the form state.
  // @see Drupal\Core\Form\FormValidator::handleErrorsWithLimitedValidation()
  $element['upload_button']['#limit_validation_errors'] = [
    [
      'upload',
    ],
    [
      'current_selection',
    ],
  ];
  $element['upload_button']['#ajax'] = [
    'callback' => '::updateFormCallback',
    'wrapper' => 'media-library-wrapper',
    // Add a fixed URL to post the form since AJAX forms are automatically
    // posted to <current> instead of $form['#action'].
    // @todo Remove when https://www.drupal.org/project/drupal/issues/2504115
    //   is fixed.
    'url' => Url::fromRoute('media_library.ui'),
    'options' => [
      'query' => $this
        ->getMediaLibraryState($form_state)
        ->all() + [
        FormBuilderInterface::AJAX_FORM_REQUEST => TRUE,
      ],
    ],
  ];
  return $element;
}