1

我想我缺少一些东西。我有一个通过yml文件验证的用户实体,但每次我向路由发送发布请求时,它似乎都没有收到我的请求。有了这个,我的意思是路由工作正常,但我不断收到密码和用户名不应为空的错误消息(由于我设置的约束)。因此,我的请求似乎没有针对实体进行验证。

我确保在我的配置中触发了此设置: 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');
}

我刚刚尝试按照说明进行操作,但我无法让它工作:(我错过了什么吗?

4

1 回答 1

2

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

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

$errors = $recursiveValidator->validate($user);
于 2017-08-25T15:34:40.240 回答