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 .
Sujet résolu
url d'aide : https://www.kaherecode.com/tutorial/creer-un-blog-avec-symfony-les-formulaires-2