我对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中使用不同的约束
如果有人暗示我,我会很高兴的。
问候
答案 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!');
}
现在我遇到了一个新问题。 ;-)感谢您的帮助。