【问题标题】:symfony validation doesn't worksymfony 验证不起作用
【发布时间】:2017-08-25 15:31:29
【问题描述】:

我想我缺少一些东西。 我有一个通过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');
}

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

【问题讨论】:

    标签: symfony validation entity symfony-3.3 symfony3.x


    【解决方案1】:

    您正在创建一个空用户,所以纠正错误,试试这个(我想用户名和密码被传递到 POST 数据中对吗?):

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

    【讨论】:

    • 是的,非常感谢。是的,它们是通过 POST 传递的。只是一个与您的解决方案相关的问题。不就是把那些数据保存在表格里吗?
    • 这样你填写实体,检查错误,然后你可以保存它或你想要的,如果你使用symfony表单,你可以自动用表单传递的表单填写用户
    • 是的,我知道,但在这种情况下,不同之处在于我没有使用表单,所以它有点不同!干杯人! :)
    猜你喜欢
    • 2017-02-27
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    相关资源
    最近更新 更多