public static ManagedFile::validateManagedFile(&$element, FormStateInterface $form_state, &$complete_form)
Render API callback: Validates the managed_file element.
File
- core/modules/file/src/Element/ManagedFile.php, line 396
Class
- ManagedFile
- Provides an AJAX/progress aware widget for uploading and saving a file.
Namespace
Drupal\file\Element
Code
public static function validateManagedFile(&$element, FormStateInterface $form_state, &$complete_form) { // If referencing an existing file, only allow if there are existing // references. This prevents unmanaged files from being deleted if this // item were to be deleted. $clicked_button = end($form_state->getTriggeringElement()['#parents']); if ($clicked_button != 'remove_button' && !empty($element['fids']['#value'])) { $fids = $element['fids']['#value']; foreach ($fids as $fid) { if ($file = File::load($fid)) { if ($file->isPermanent()) { $references = static::fileUsage()->listUsage($file); if (empty($references)) { // We expect the field name placeholder value to be wrapped in t() // here, so it won't be escaped again as it's already marked safe. $form_state->setError($element, t('The file used in the @name field may not be referenced.', ['@name' => $element['#title']])); } } } else { // We expect the field name placeholder value to be wrapped in t() // here, so it won't be escaped again as it's already marked safe. $form_state->setError($element, t('The file referenced by the @name field does not exist.', ['@name' => $element['#title']])); } } } // Check required property based on the FID. if ($element['#required'] && empty($element['fids']['#value']) && !in_array($clicked_button, ['upload_button', 'remove_button'])) { // We expect the field name placeholder value to be wrapped in t() // here, so it won't be escaped again as it's already marked safe. $form_state->setError($element, t('@name field is required.', ['@name' => $element['#title']])); } // Consolidate the array value of this field to array of FIDs. if (!$element['#extended']) { $form_state->setValueForElement($element, $element['fids']['#value']); } }
Please login to continue.