Depuis deux jours, je suis confronté à un problème sur Symfony que je n'arrive pas à résoudre. Chaque fois que j'essaie d'ajouter une annonce après avoir rempli mon formulaire, une erreur se produit. J'aurais besoin de votre aide pour résoudre ce problème, s'il vous plaît...
L'erreur en question :
https://zupimages.net/up/23/28/y5ns.png
J'ai besoin de résoudre ce problème !

J'ai Discord !
Voici mon CONTROLLER
<?php
namespace App\Controller;
use App\Entity\Evenement;
use App\Form\EvenementType;
use DateTimeImmutable;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class EventsController extends AbstractController
{
/**
*@Route("/events/new", name="events_new")
*/
public function new(Request $request, ManagerRegistry $doctrine)
{
$evenement = new Evenement;
$evenement->setPublishedAt(new DateTimeImmutable());
$formEvenement = $this->createForm(EvenementType::class, $evenement);
$formEvenement->handleRequest($request);
if ($formEvenement->isSubmitted() && $formEvenement->isValid())
{
$entityManager = $doctrine->getManager();
$entityManager->persist($evenement);
$entityManager->flush();
return $this->redirectToRoute('evenement_list');
}
return $this->render('events/form-new.html.twig', [
"formEvenement" => $formEvenement->createView()
]);
}
/**
* @Route ("/events/edit/{id}", name="evenement_edit")
*/
public function edit($id, ManagerRegistry $doctrine, Request $request)
{
$evenement = $doctrine->getRepository(Evenement::class)->find($id);
$formEvenement = $this->createForm(EvenementType::class, $evenement);
$formEvenement->handleRequest($request);
if($formEvenement->isSubmitted() && $formEvenement->isValid())
{
$entityManager = $doctrine->getManager();
$entityManager->flush();
return $this->redirectToRoute('evenement_list');
}
$formEvenement = $this->createForm(EvenementType::class, $evenement);
return $this->render ('events/form-edit.html.twig', [
"formEvenement" => $formEvenement->createView(),
]);
}
/**
* @Route("/events/delete/{id}", name="evenement_delete")
*/
public function delete($id, ManagerRegistry $doctrine)
{
$entityManager = $doctrine->getManager();
$evenement = $doctrine->getRepository(Evenement::class)->find($id);
$entityManager->remove($evenement);
$entityManager->flush();
return $this->redirectToRoute('evenement_list');
}
##READ : ALL
/**
* @Route("/events/list", name="evenement_list")
*/
public function readAll(ManagerRegistry $doctrine)
{
$this->denyAccessUnlessGranted('ROLE_USER');
#Etape 1 : Récupérer tous les livres
$evenements = $doctrine->getRepository(Evenement::class)->findAll();
#Envoyer les livres récupérés dans une page, dans laquelle vous listerez tous les livress
return $this->render("events/list.html.twig", [
"evenements" => $evenements
]);
}
/**
* @Route("/events/{id}", name="evenement_detail", requirements={"id"="\d+"})
*/
public function detail($id, ManagerRegistry $doctrine)
{
$evenements = $doctrine->getRepository(Evenement::class)->find($id);
return $this->render('events/item.html.twig', [
"evenements" => $evenements
]);
}
/**
* @Route("/evenements", name="events")
*/
public function evenements(ManagerRegistry $doctrine)
{
$evenements = $doctrine->getRepository(Evenement::class)->findAll();
return $this->render('events/evenements.html.twig', [
"evenements" => $evenements
]);
}
}
Voici mon ENTITY
<?php
namespace App\Entity;
use App\Repository\EvenementRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Doctrine\DBAL\Types\Types;
#[ORM\Entity(repositoryClass: EvenementRepository::class)]
#[Vich\Uploadable]
class Evenement
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $titre = null;
#[ORM\OneToOne(inversedBy: 'evenement', cascade: ['persist', 'remove'])]
#[ORM\JoinColumn(nullable: false)]
private ?Artiste $nom = null;
#[ORM\Column]
private ?\DateTimeImmutable $date = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $presentation = null;
#[Vich\UploadableField(mapping: 'evenement', fileNameProperty: 'imageName')]
private ?File $imageFile = null;
#[ORM\Column(nullable: true)]
private ?string $imageName = null;
#[ORM\Column(nullable: true)]
private ?\DateTimeImmutable $publishedAt = null;
public function getId(): ?int
{
return $this->id;
}
public function getTitre(): ?string
{
return $this->titre;
}
public function setTitre(?string $titre): self
{
$this->titre = $titre;
return $this;
}
public function getNom(): ?Artiste
{
return $this->nom;
}
public function setNom(Artiste $nom): self
{
$this->nom = $nom;
return $this;
}
public function getDate(): ?\DateTimeImmutable
{
return $this->date;
}
public function setDate(\DateTimeImmutable $date): self
{
$this->date = $date;
return $this;
}
public function getPresentation(): ?string
{
return $this->presentation;
}
public function setPresentation(?string $presentation): self
{
$this->presentation = $presentation;
return $this;
}
public function setImageFile(?File $imageFile = null): void
{
$this->imageFile = $imageFile;
}
public function getImageFile(): ?File
{
return $this->imageFile;
}
public function setImageName(?string $imageName): void
{
$this->imageName = $imageName;
}
public function getImageName(): ?string
{
return $this->imageName;
}
public function getPublishedAt(): ?\DateTimeImmutable
{
return $this->publishedAt;
}
public function setPublishedAt(?\DateTimeImmutable $publishedAt): self
{
$this->publishedAt = $publishedAt;
return $this;
}
}
Voci mon FORM
<?php
namespace App\Form;
use App\Entity\Evenement;
use App\Entity\Artiste;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class EvenementType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('imageFile', FileType::class, [
"required" => false
])
->add('titre', TextType::class)
->add('date', DateTimeType::class, [
'required' => false
])
->add('nom', EntityType::class, [
'required' => false,
'class' => Artiste::class,
'choice_label' => 'nom'
])
->add('presentation', TextareaType::class)
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Evenement::class,
]);
}
}