Salut tout le monde,

J'ai une entité Personne qui possède des attributs notamment $lastName et $firstName qui n'accepte pas les valeurs null.

Du coup, j'aimerais tester le validator qui peut se baser sur les contraintes de l'entité pour faire des validations basique grâce au paramètre automapping. Voilà, le lien de la documentation qui en parle: https://symfony.com/doc/current/doct...dating-objects. D'ailleurs, je me base sur la doc pour faire mon test.

Je paramètre donc cela dans config/packages/validator.yaml:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
framework:
    validation:
        email_validation_mode: html5
 
        # Enables validator auto-mapping support.
        # For instance, basic validation constraints will be inferred from Doctrine's metadata.
        #auto_mapping:
        #    App\Entity\: []
        auto_mapping:
            App\Entity\: []
 
when@test:
    framework:
        validation:
            not_compromised_password: false
Du coup, je met exactement la configuration indiquée dans le fichier de conf validator.yaml.

Mon controller:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
<?php
 
namespace App\Controller;
 
use App\Entity\Personne;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
 
class PersonneController extends AbstractController
{
    #[Route('/personne', name: 'create_personne')]
    public function createPersonne(
        ValidatorInterface $validator
    ): Response 
    {
        $personne = new Personne();
        $personne->setFirstName(null);
        $personne->setLastName('Brochard');
        $personne->setHeight(2);
        $personne->setBio('Une petite bio');
 
        $errors = $validator->validate($personne);
        if (count($errors) > 0) {
            return new Response((string) $errors, 400);
        }
    }
}
Lorsque je me rend sur /personne, j'obtiens une erreur HTTP 500:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
App\Entity\Personne::setFirstName(): Argument #1 ($firstName) must be of type string, null given,
au lieu de faire fonctionner le validator et avoir une erreur 400.

Savez vous ce qu'il me manque pour faire fonctionner l'auto_mapping s'il vous plaît?

Je vous remercie par avance,