title: Update form vich uploader, cannot delete or edit file
body: <p>I can't delete or edit my uploaded image with VichUploaderBundle. I have an Annonce and Photo entities with OneToMany (bidirectionnal relation). I try with an attribute setUpdatedAt to call vich prePersist but he doesn't work.</p>
  
  <p>Here is Annonce : </p>
  
  <pre><code>class Annonce
  {
  // ...
  /**
   * @ORM\OneToMany(targetEntity="Immo\AnnonceBundle\Entity\Photo", mappedBy="annonce", cascade={"persist", "remove"})
   */
  private $photos;
  </code></pre>
  
  <p>Photo entity with setter/getterImage() :</p>
  
  <pre><code>use Symfony\Component\HttpFoundation\File\File;
  use Symfony\Component\HttpFoundation\File\UploadedFile;
  use Vich\UploaderBundle\Mapping\Annotation as Vich;
  use Symfony\Component\Validator\Constraints as Assert;
  
  /**
   * Photo
   * @Vich\Uploadable
   * @ORM\Table()
   */
  class Photo
  {   // id, etc. 
      /**
       * @Assert\File(
       *     maxSize="1M",
       *     mimeTypes={"image/png", "image/jpeg", "image/pjpeg"}
       * )
       * @Vich\UploadableField(mapping="uploads_image", fileNameProperty="url")
       *
       * @var File $image
       */
      protected $image;
  
      /**
       * @ORM\Column(type="string", length=255, name="url")
       *
       * @var string $url
       */
      protected $url;
  
      /**
       * @ORM\ManyToOne(targetEntity="Immo\AnnonceBundle\Entity\Annonce", inversedBy="photos")
       */
      private $annonce;
  
      /**
       * @ORM\Column(type="datetime", nullable=true)
       *
       * @var \DateTime $updatedAt
       */
      protected $updatedAt;
  
  /**
   * Set image
   *
   * @param string $image
   * @return Photo
   */
  public function setImage($image)
  {
      $this-&gt;image = $image;
  
      if ($this-&gt;image instanceof UploadedFile) {
          $this-&gt;updatedAt = new \DateTime('now');
      }
  
      return $this;
  }
  </code></pre>
  
  <p>Here is my config.yml:</p>
  
  <pre><code>knp_gaufrette:
  stream_wrapper: ~
  adapters:
      uploads_adapter:
          local:
              directory: %kernel.root_dir%/../web/img/uploads
  filesystems:
      uploads_image_fs:
          adapter:    uploads_adapter
  
  vich_uploader:
      db_driver: orm
      twig: true
      gaufrette: true
      storage:   vich_uploader.storage.gaufrette
      mappings:
          uploads_image:
              delete_on_remove: true
              delete_on_update: true
              inject_on_load: true
              uri_prefix:         img/uploads
              upload_destination: uploads_image_fs
              namer: vich_uploader.namer_uniqid
  </code></pre>
  
  <p>My AnnonceType:</p>
  
  <pre><code>$builder-&gt;add('photos', 'collection', array('type' =&gt; new PhotoType(),
                                                  'allow_add' =&gt; true,
                                                  'allow_delete' =&gt; true,
                                                  'by_reference' =&gt; false,
                                                  )
                    )
  </code></pre>
  
  <p>PhotoType:</p>
  
  <pre><code>$builder-&gt;add('image', 'file')
  </code></pre>
  
  <p>The Controller :</p>
  
  <pre><code>public function updateAnnonceAction($id)
      {
          $em = $this-&gt;getDoctrine()-&gt;getManager();
  
          $annonce = $em-&gt;getRepository('ImmoAnnonceBundle:Annonce')
                        -&gt;findCompleteAnnonceById($id);
  
          $form = $this-&gt;createForm(new AnnonceType, $annonce);
  
          $request = $this-&gt;get('request');
  
          if ($request-&gt;getMethod() == 'POST') {
              $form-&gt;bind($request);
  
              if ($form-&gt;isValid()) {
  
                  $em = $this-&gt;getDoctrine()-&gt;getManager();
  
                  $em-&gt;persist($annonce);
                  $em-&gt;flush();
  
                  $this-&gt;get('session')-&gt;getFlashBag()-&gt;add('success', 'ok');
  
                  return $this-&gt;redirect($this-&gt;generateUrl('immo_admin_annonce_homepage'));
  
              }
          }
  
          return $this-&gt;render('ImmoAnnonceBundle:Admin/Annonce:update.html.twig', array('annonce' =&gt; $annonce,
                                                                         'form' =&gt; $form-&gt;createView()
                                                                                        )
                              );
      }
  </code></pre>
  
  <p>And my template put input file for each Photo in Annonce in html :</p>
  
  <pre><code>{{ form_widget(form.photos) }} // With JS to manage add/delete on each input.
  // Return this :
  &lt;input type="file" required="required" name="immo_annoncebundle_annonce[photos][2][image]" id="immo_annoncebundle_annonce_photos_2_image"&gt;
  </code></pre>