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

  • un nom
  • une image

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