フォームのbuildForm
関数では、次を使用できますCallbackValidator
。
use Symfony\Component\Form as Form;
//...
public function buildForm(FormBuilder $builder, array $options)
{
// build your form...
$builder->addValidator(new Form\CallbackValidator(function(Form\FormInterface $form)
{
if ($form["password"]->getData() != $form["repeat_password"]->getData())
{
$form->addError(new Form\FormError('passwords must be the same'));
}
});
//...
}
symfony 2.1+ では、POST_BIND イベントのイベント リスナーを追加する必要があります。
$builder->addEventListener(FormEvents::POST_BIND, function(FormEvent $event)
{
$form = $event->getForm();
if($form['password']->getData() !== $form['password_confirm']->getData())
{
$form['password_confirm']->addError(new FormError('error.form.passwords-not-match'));
}
});