Symfony 2:验证用于更改密码的表单

时间:2014-11-10 21:06:14

标签: forms validation symfony

我对symfony很新,并且在表单验证方面遇到了麻烦。我的目标是验证表格。我想确保密码中有一个数字和一个cpital字母,我还想定义最小和最大长度。我开始验证密码不是空白,但它不起作用(错误:未定义的变量验证器)。也许有人对我有暗示吗?

#src/Pso/LogBundle/Resources/config/validation.yml
Pso\LogBundle\Entity\User:
    properties:
        password:
            - NotBlank: ~ { groups: [changePW] }

控制器:

public function changePwAction(Request $request)
    {   //Formularerstellung
        $form =  $this->createForm(new UserType());
        $form->handleRequest($request);
        $session = $request->getSession();
        $errors = $validator->validate($user, array('changePW'));

        //Prüfung ob das abgesendete  Formular valide ist
        if (count($errors) > 0) {

        $errorsString = (string) $errors;
        return new Response($errorsString);
        }
        return new Response('The author is valid! Yes!');
    }

我不使用FOSUserBundle。我创建了一个Controller来手动验证密码,但是为了简化表单验证,我的目标是在validation.yml中使用不同的约束

如果有人暗示我,我会很高兴的。

问候

2 个答案:

答案 0 :(得分:0)

使用类似的东西。您可以将所有验证约束附加到您的属性。

Pso\LogBundle\Entity\User:
    properties:
        password:
            - NotBlank: ~
            - Regex: 'YOURFAVOURITEREGEX'
            - Length:
                min: 2
                max: 50

请参阅http://symfony.com/doc/current/book/validation.html

您可以展开它并使用“message”参数抛出某些错误。检查约束文档以获取确切的消息名称(例如,长度有点不同)

答案 1 :(得分:0)

我解决了这个问题。我忘了定义验证器了。我的控制器使用

更多一点
{   //Formularerstellung
    $form =  $this->createForm(new UserType());
    $form->handleRequest($request);
    $session = $request->getSession();

    $validator = $this->get('validator');
    $errors = $validator->validate($user, array('changePW'));

    if (count($errors) > 0) {

    $errorsString = (string) $errors;
    return new Response($errorsString);
    }
    return new Response('The author is valid! Yes!');
}

现在我遇到了一个新问题。 ;-)感谢您的帮助。