Am un formular configurat în meniul de administrare care permite unei persoane să încarce un fișier, ca o imagine. Fișierul respectiv este apoi folosit în modulul personalizat în altă parte. Vreau să pot înlocui acel fișier dacă îl încarcă din nou. Cred că pot folosi FileSystemInterface::EXISTS_REPLACE
în formular pentru a face acest lucru, dar nu găsesc documentație despre cum să fac exact. Există exemple de implementare a acestui lucru? Vă rog să-mi spuneți dacă doriți să vedeți formularul sau orice alt cod, dar nu cred că este necesar. Mulțumiri!
Editați, am văzut o documentație de anul trecut care spune că nu este posibil să înlocuiți fișierele încărcate cu altele cu același nume. Mă întreb dacă acest lucru este încă adevărat din aprilie 2022.
Iată unde este încărcată imaginea sub formă:
$form['upload']['sound_dir'] = [
'#type' => 'fișier_gestionat',
'#upload_location' => 'public://',
'#required' => FALSE,
'#multiple' => FALSE,
'#description' => t('Extensii permise: mp3 wav'),
'#upload_validators' => [
'file_validate_extensions' => array('mp3 wav'),
'file_validate_size' => matrice (25600000)
],
'#title' => t('Încărcați un fișier de sunet:')
];
Și trimiterea:
funcția publică submitForm(matrice &$form, FormStateInterface $form_state) {
$file_data = $form_state->getValue(['upload' => 'sound_dir']);
if ($file_data != null) {
$fișier = \Drupal\file\Entity\File::load( $file_data[0], );
$file_name = $file->getFilename();
$uri = $fișier->getFileUri();
$url = \Drupal\Core\Url::fromUri(file_create_url($uri))->toString();
$fișier->setPermanent();
$fișier->salvare();
$this->configFactory->getEditable(static::SETTINGS)
->set('pathToSound', $url)
->salvare();
parent::submitForm($form, $form_state);
}
}