@@ -130,7 +130,7 @@ Finally, you need to update the code of the controller that handles the form::
130
130
$form = $this->createForm(new ProductType(), $product);
131
131
$form->handleRequest($request);
132
132
133
- if ($form->isValid()) {
133
+ if ($form->isSubmitted() && $form-> isValid()) {
134
134
// $file stores the uploaded PDF file
135
135
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
136
136
$file = $product->getBrochure();
@@ -210,7 +210,7 @@ To avoid logic in controllers, making them big, you can extract the upload
210
210
logic to a seperate service::
211
211
212
212
// src/AppBundle/FileUploader.php
213
- namespace AppBundle\FileUploader ;
213
+ namespace AppBundle;
214
214
215
215
use Symfony\Component\HttpFoundation\File\UploadedFile;
216
216
@@ -304,7 +304,9 @@ automatically upload the file when persisting the entity::
304
304
// src/AppBundle/EventListener/BrochureUploadListener.php
305
305
namespace AppBundle\EventListener;
306
306
307
+ use Symfony\Component\HttpFoundation\File\UploadedFile;
307
308
use Doctrine\ORM\Event\LifecycleEventArgs;
309
+ use Doctrine\ORM\Event\PreUpdateEventArgs;
308
310
use AppBundle\Entity\Product;
309
311
use AppBundle\FileUploader;
310
312
@@ -324,7 +326,7 @@ automatically upload the file when persisting the entity::
324
326
$this->uploadFile($entity);
325
327
}
326
328
327
- public function preUpdate(LifecycleEventArs $args)
329
+ public function preUpdate(PreUpdateEventArgs $args)
328
330
{
329
331
$entity = $args->getEntity();
330
332
@@ -364,6 +366,7 @@ Now, register this class as a Doctrine listener:
364
366
arguments : ['@app.brochure_uploader']
365
367
tags :
366
368
- { name: doctrine.event_listener, event: prePersist }
369
+ - { name: doctrine.event_listener, event: preUpdate }
367
370
368
371
.. code-block :: xml
369
372
@@ -382,6 +385,7 @@ Now, register this class as a Doctrine listener:
382
385
<argument type =" service" id =" app.brochure_uploader" />
383
386
384
387
<tag name =" doctrine.event_listener" event =" prePersist" />
388
+ <tag name =" doctrine.event_listener" event =" preUpdate" />
385
389
</service >
386
390
</container >
387
391
@@ -398,6 +402,9 @@ Now, register this class as a Doctrine listener:
398
402
$definition->addTag('doctrine.event_listener', array(
399
403
'event' => 'prePersist',
400
404
));
405
+ $definition->addTag('doctrine.event_listener', array(
406
+ 'event' => 'preUpdate',
407
+ ));
401
408
$container->setDefinition('app.doctrine_brochure_listener', $definition);
402
409
403
410
This listeners is now automatically executed when persisting a new Product
0 commit comments