2017-08-25 1 views
1

Je suppose qu'il y a quelque chose qui me manque. J'ai une entité Utilisateur qui est validée par un fichier yml mais chaque fois que j'envoie une demande de publication à la route, il semble qu'elle ne reçoive pas ma demande. Avec cela, je veux dire que la route fonctionne bien, mais je reçois toujours les messages d'erreur que le mot de passe et le nom d'utilisateur ne doit pas être vide (en raison des contraintes que je définis). Il semble donc que ma requête ne soit pas validée contre l'entité.La validation symfony ne fonctionne pas

Je me suis assuré d'avoir ces paramètres déclenchés dans ma config: validation: { enabled: true, enable_annotations: true }

Voici mon routing.yml:

user_login_homepage: 
    path:  /check 
    defaults: { _controller: UserLoginBundle:Login:checkCredentials } 
    methods: [POST] 

Voici mon validation.yml

User\UserBundle\Entity\User: 
    properties: 
     username: 
      - NotBlank: ~ 
     password: 
      - NotBlank: ~ 

Voici mon contrôleur (LoginController.php)

J'ai juste essayé de suivre les instructions mais je ne peux pas l'avoir:

Répondre

2

vous créez un utilisateur vide Il est donc corriger l'erreur, essayez ceci (je dois imaginer que le nom d'utilisateur et mot de passe sont transmis en données POST droit?):

$user = new User(); 
$postData = $request->request->all(); 
$user->setUsername($postData['username']; 
$user->setPassword($postData['password']; 

$errors = $recursiveValidator->validate($user); 
+0

Ouais merci beaucoup. Oui, ils sont passés par POST. Juste une question liée à votre solution. Ne pas enregistrer ces données dans le tableau de cette façon? –

+0

De cette façon, vous remplissez l'entité, vérifier les erreurs et après vous pouvez l'enregistrer ou wat vous voulez, si vous utilisez formulaire symfony, vous pouvez remplir automatiquement l'utilisateur avec le formulaire passé par le formulaire –

+0

Ouais je le sais mais la différence dans cette Le cas réside dans le fait que je n'utilise pas le formulaire donc c'était un peu différent! À la votre! :) –