2017-08-25 225 views
1

我想有一些我错过了。 我有一个用户实体,它通过yml文件进行验证,但每次我向路由发送邮寄请求时,似乎都不会收到我的请求。有了这个我的意思是路线工作正常,但我不断收到错误消息,密码和用户名不应该是空的(由于我设置的限制)。所以它似乎没有让我的请求对实体进行验证。symfony验证不起作用

我就确定在我的配置触发此设置: validation: { enabled: true, enable_annotations: true }

这里是我的routing.yml

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

这里是我的validation.yml

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

这里是我的控制器( LoginController.php

public function checkCredentialsAction(Request $request) 
{ 
    $recursiveValidator = $this->get('validator'); 

    $user = new User(); 

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

    if (count($errors) > 0) { 
     $errorsString = (string) $errors; 
     return new Response($errorsString); 
    } 

    return new Response('Yuppy'); 
} 

我只是试图按照说明,但我不能让它的工作:( 我错过了什么?

回答

2

要创建一个空的用户所以它是正确的错误,试试这个(我有想象的用户名和密码被传递到POST数据吧?):

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

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

呀非常感谢。是的,他们正在通过POST。只是一个有关你的解决方案的问题。不是以这种方式将这些数据保存在表格中吗? –

+0

通过这种方式,你填写实体,检查错误,然后你可以保存它或你想要的,如果你使用的是symfony表单,你可以自动填写表单所传递的表单 –

+0

是的,我知道但是这个差别情况在于我没有使用表格,所以它有点不同! 干杯人! :) –