I am using the cookbook article from symfony.com to implement a file upload option for images.
Now I want to load up other images to the entity.
The default stra
I have was in similar situation. I try to edit existing record in database with path to the file. When i edit record i must upload new file, what is not comfortable for users. In my solution i use variable tmp file for file hash and variable file name. All needed operation i made in Action edit class.
Full example action class in bellow link
https://github.com/marekz/php_examples/wiki/Symfony-how-to-edit-attachment-form
The cookbook does not handle updates, in particular in the case where only the file changes.
In this case, the PreUpdate
event is not triggered, so you need to trigger $entity->preUpload()
manually before the $em->persist($entity)
, so that the file upload gets handled in any case (preUpload will alter $entity->path
so the persisting will occur)
If you change only the upload field the lifecycle not run the upload method, In the cookbook is reported the solution in a quote box as below:
The PreUpdate and PostUpdate callbacks are only triggered if there is a change in one of the entity's field that are persisted. This means that, by default, if you modify only the $file property, these events will not be triggered, as the property itself is not directly persisted via Doctrine. One solution would be to use an updated field that's persisted to Doctrine, and to modify it manually when changing the file.
add a dummy field to update in the controller before persist event as suggest by this duscussion:
https://github.com/symfony/symfony-docs/pull/564
public function setFile(UploadedFile $file)
{
$this->file = $file;
$this->updatedAt = new \DateTime();
}