Hola,
Estoy tratando de averiguar cómo eliminar simplemente un archivo adjunto a una entidad. No quiero eliminar todo el objeto de la entidad y tampoco quiero reemplazar el archivo con otro archivo. Simplemente elimine el archivo. Busqué en la documentación y probé en Google, pero no encontré nada útil. También intenté establecer la variable de archivo del objeto de entidad en NULL y persistir la entidad. Pero esto no eliminó el archivo físico.
Cualquier sugerencia es muy apreciada.
Mejor,
Andreas
Publiqué demasiado rápido. Resolví esto con el siguiente código:
$this->get('vich_uploader.storage')->remove($entity, 'file_mapping');
$entity->setFile(null);
$entity->setFileName(null);
Seguido de la persistencia de la entidad.
Cierro este problema entonces :)
Creo que este comportamiento de no eliminar el archivo físico cuando la variable de archivo de un objeto de entidad se establece como nula es más bien un error o una característica que falta. Creo que con
delete_on_update: true
el oyente debe capturar la configuración de la variable en nulo y el archivo debe eliminarse automáticamente.
Esto debería mencionarse en alguna parte de la documentación :-)
El paquete evolucionó y la forma correcta de eliminar un archivo "manualmente" ahora es: $this->get('vich_uploader.upload_handler')->remove($entity, 'fieldName');
La inyección de vich_uploader.upload_handler
rompe la abstracción. Considere implementar esto:
el oyente debe capturar la configuración de la variable en nulo y el archivo debe eliminarse automáticamente.
Comentario más útil
Creo que este comportamiento de no eliminar el archivo físico cuando la variable de archivo de un objeto de entidad se establece como nula es más bien un error o una característica que falta. Creo que con
el oyente debe capturar la configuración de la variable en nulo y el archivo debe eliminarse automáticamente.