这是绑定到表单的实体。
验证.yml
My\Bundle\Entity\User:
properties:
login:
- NotBlank:
message: "Login is empty."
- Length:
min: 3
max: 16
- My\Bundle\Validator\Constraints\Alphanumeric: ~
这是一个未绑定的字段
注册类型.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('login', 'text', array('label' => 'Login'));
...
$builder->add('captcha', 'captcha', array(
'label' => 'Captcha',
'mapped' => false,
'constraints' => array(new ContainsCaptcha)
));
}
检查错误
MyController.php
$formFields = $form->all();
foreach ($formFields as $key => $field) {
if ($field->getErrorsAsString()) {
$errors = $field->getErrors();
foreach ($errors as $error) {
$messages[$key][] = $error->getMessage();
}
}
}
var_dump($messages);
验证码没有像其他人一样经过验证。它可能有错误,只有其他字段中的一个可能有错误。
我认为有两种选择是正确的:
1/ 同时获取所有无效字段的错误(登录、电子邮件、...、验证码)
2/ 如果登录或其他已经失败,则不验证验证码
怎么做?
此外,登录总是首先得到验证。更改validation.yml 或buildForm() 中的声明顺序不会改变任何东西。我想这取决于 Entity.orm.yml 声明顺序。如何在不更改实体元数据的情况下更改此订单。