Formulaire validation html5

Par Ybag, il y a 5 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.
Dans mon formulaire d'édition, je souhaite ôter la validation html5 du client-side, j'ai donc ajouter le code :

{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }} {{ form_widget(form) }} {{ form_end(form) }}

Voulant tester mes règles de validation, je vide un champs, mais j'ai le message symfony au lieu d'avoir une erreur sur mon formulaire :
Symfony\Component\PropertyAccess\Exception\InvalidArgumentException:
Expected argument of type "string", "null" given at property path "code_fonction".

Ce que je fais

Mon entité (j'ai essayé de passer toutes mes propriétés en nullable = true, mais toujours même problème) :

/** * @ORM\Entity(repositoryClass=ConduitRepository::class) */ class Conduit { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string", length=40, nullable=true) * @Assert\NotBlank */ private $code_fonction; /** * @ORM\Column(type="string", length=40, nullable=true) * @Assert\NotBlank */ private $num_serie; /** * @ORM\Column(type="string", length=40, nullable=true) * @Assert\NotBlank */ private $dr_a; /** * @ORM\Column(type="string", length=40, nullable=true) * @Assert\NotBlank */ private $cat; /** * @ORM\Column(type="string", length=255) * @Assert\NotBlank */ private $assemblee; /** * @ORM\Column(type="string", length=255, nullable=true) * @Assert\NotBlank */ private $noeud_a; /** * @ORM\Column(type="string", length=255, nullable=true) */ private $nom_eqpt_logique_a; /** * @ORM\Column(type="string", length=255, nullable=true) */ private $ident_eqpt_logique_a;

Mon Controller

/** * @Route("/nettoyage/{id}", name="trenten.edit", methods={"GET","POST"}) * @param Request $request * @param Conduit $conduit * @return Response */ public function edit(Request $request, Conduit $conduit): Response { $form = $this->createForm(ConduitType::class, $conduit); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $this->em->flush(); return $this->redirectToRoute('trenten.index'); } return $this->render('conduit/trenten/edit.html.twig', [ 'conduit' => $conduit, 'form' => $form->createView(), ]); }

Mon formulaire (pour l'instant le plus basique possible)

{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }} {{ form_widget(form) }} <button class="btn">{{ button_label|default('Save') }}</button> {{ form_end(form) }}

Je dois certainement passer à côté de quelques choses, mais depuis deux jours je bloque...
Merci d'avance pour votre aide

3 réponses

olive140, il y a 5 ans

Bonjour,
Cela vient du tipage au niveau du setter:

public function setCodeFonction(string $code_fonction) à remplacer par public function setCodeFonction(?string $code_fonction)
Ybag, il y a 5 ans

Merci beaucoup !
Je suis complètement passer à côté...

olive140, il y a 5 ans

Merci de mettre le sujet en résolu.