Sommaire

Récupération des données de l’entité par défaut

Nous avons mis au point l’action insert(). Voyons comment mettre au point l’action update() avec un produit existant.

Le code est pratiquement le même. Vous pouvez faire un copier-coller du code de insert() dans update($id).

Voici ce qui va changer.

On récupère l’entité correspondant à l’id transmis en paramètre dans l’action :

        $em=$this->getDoctrine()->getManager(); 
        $produitRepository=$em->getRepository(Produit::class); 
        $produit=$produitRepository->find($id);

Quelque chose de moins évident : on va sauvegarder dans une variable la valeur de la propriété lienImage de l’entité $produit.

Pourquoi cela ?

Lorsqu’on va récupérer les données issues du formulaire, elles vont hydrater automatiquement l’entité (méthode $formProduit->handleRequest($request);). Si le client souhaite conserver l’image de départ de l’entité, il ne va pas appuyer sur le bouton Browse. La propriété hydratée dans l’entité $produit sera null et on aura perdu la valeur de lienImage contenue dans l’entité au préalable. Il faut donc avant toute chose sauvegarder cette valeur :

 $img=$produit->getLienImage(); ...