Formulaire de modification de données avec une image

Par mary_25, il y a 4 ans


Bonjour,
J'ai un formulaire de modification de partenaire qui contient 2 champs :

J'aimerai lors de la modification du nom d'un partenaire, que le formulaire conserve mon image qui se trouve en base de donées à car si je change juste le nom, il renvoie le formulaire sans image.

formulaire de modification d'un partenaire : <div data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-scrollable"> <div class="modal-content"> <div class="modal-header "> <h5 class="modal-title text-primary fs-4" id="staticBackdropLabel"> Modification de la personne </h5> </div> {{ form_start(form_edit_equipe) }} <div class="modal-body"> <label class="text-primary fs-5 mt-4"> Nom de la personne : {% for equipe in equipe %} {{equipe.nom}} {% endfor %} </label> <div class="input-field " style="margin-top: -0.8rem !important;"> {{ form_widget(form_edit_equipe.nom) }} <span class="error">{{ form_errors(form_edit_equipe.nom) }}</span> </div> <div class="input-field " style="margin-top: -0.8rem !important;"> {{ form_widget(form_edit_equipe.fonction) }} <span class="error">{{ form_errors(form_edit_equipe.fonction) }}</span> </div> <div class="input-field " style="margin-top: -0.8rem !important;"> {{ form_widget(form_edit_equipe.description) }} <span class="error">{{ form_errors(form_edit_equipe.description) }}</span> </div> </div> <div class="mt-4 select-wrapper select_role input-field "> <label class="text-primary fs-5" style="margin-left: 1.3rem; margin-top: -3rem;">Photo de la personne : </label> <img style="margin-left: 1.2rem !important;margin-top:1rem !important;" src="{{ asset('uploads/' ~ equipe.image) }}" alt="logo_entreprise" width="70"> <div class="pl-3 pt-4 text-primary fs-7"> {{ form_widget(form_edit_equipe.image) }} </div> </div> <div class="input-field border-top"> <button type="submit" style="text-transform: none; background:navy !important; border:none !important; margin-top: 0.6rem !important; margin-left:0.8rem !important;" class="btn btn-primary">Enregistrer</button> </div> {{ form_end(form_edit_equipe) }} </div> </div> </div> mon controller: #[Route('/edit_partenaire/{id}', name: 'edit_partenaire')] public function editPartenaire(Partenaires $partenaire, Request $request) { $this->denyAccessUnlessGranted('ROLE_ADMIN'); $form_edit_partenaire = $this->createForm(PartenairesType::class, $partenaire); $form_edit_partenaire->handleRequest($request); if ($form_edit_partenaire->isSubmitted() && $form_edit_partenaire->isValid()) { if ($partenaire->getImage() !== null) { $file = $form_edit_partenaire->get('image')->getData(); $fileName = uniqid() . '.' . $file->guessExtension(); try { $file->move( $this->getParameter('images_directory'), // Le dossier dans le quel le fichier va etre charger $fileName ); } catch (FileException $e) { return new Response($e->getMessage()); } $partenaire->setImage($fileName); } $em = $this->getDoctrine()->getManager(); // On récupère l'entity manager $em->persist($partenaire); // On confie notre entité à l'entity manager (on persist l'entité) $em->flush(); // On execute la requete $this->addFlash('success', 'L\'objectif a bien été modifié'); } return $this->render('admin/edit/edit_partenaire.html.twig', [ 'partenaire' => $partenaire, 'form_edit_partenaire' => $form_edit_partenaire->createView() ]); }

Ce que j'obtiens

Après avoir modifier le nom de mon partenaire et valider mon formulaire. mon changement de nom a bien été pris en compte mais il m'a supprimé l'image qui existait .

1 réponse