我设置了一个非常基本的表单来注册用户(用户名+密码)。我想在我的控制器中获取验证错误。
我找到了两种方法来做到这一点:
// In my controller:
$user = new User();
$form = $this->createForm(new UserType, $user);
$request = $this->get('request');
if($request->getMethod() == 'POST') {
$form->bind($request);
if($form->isValid()) {
// save user in DB
} else {
// First way
$errors = $this->get('validator')->validate($user);
// OR
$errors = $form->getErrors();
}
}
例如,如果我在表单中输入的用户名太短,这两种方法都有效(此字段上有一个约束 MinLength)。但是如果我输入了两个不同的密码,表单就无效了,并且在 $form->getErrors() 或 $this->get('validator')->validate($user) 中没有消息错误。我怎样才能得到这个错误信息?
这是我构建表单的方式
$builder->add('username', 'text', array(
'attr' => array(
'placeholder' => 'Choose an username'
),
'label' => 'Username *',
'error_bubbling' => true,
));
$builder->add('password', 'repeated', array(
'type' => 'password',
'invalid_message' => 'The password fields must match.',
'required' => true,
'first_options' => array(
'label' => 'Password',
'attr' => array('placeholder' => 'Enter password')
),
'second_options' => array(
'label' => 'Repeat Password',
'attr' => array('placeholder' => 'Retype password')
),
));