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".
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
Bonjour,
Cela vient du tipage au niveau du setter:
public function setCodeFonction(string $code_fonction)
à remplacer par
public function setCodeFonction(?string $code_fonction)