ユーザーを登録するための非常に基本的なフォーム(ユーザー名+パスワード)を設定しました。コントローラで検証エラーを取得したいのですが。
私はそれを行う2つの方法を見つけました:
// 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があります)。しかし、2つの異なるパスワードを入力すると、フォームは無効になり、$ 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')
),
));