BEFORE
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('name')
->add('email', 'repeated', array(
'type' => 'email',
'invalid_message' => '同じ値を入力してください',
))
->add('rawPassword', 'password', array(
'always_empty' => false,
))
->add('tel')
->add('birthday', 'birthday')
->add('agreement', 'checkbox', array(
'property_path' => false,
'required' => true,
))
;
$builder->addValidator(new CallbackValidator(function($form) {
if (!$form['agreement']->getData()) {
$form['agreement']->addError(new FormError('利用規約に同意してください'));
}
}));
}
AFTER
use Symfony\Component\Form\FormEvents;
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('email','repeated',array(
'type' => 'email',
'invalid_message' => '同じ値を入力してください',
))
->add('rawPassword','password',array(
'always_empty' => false,
))
->add('tel')
->add('birthday','birthday')
->add('agreement','checkbox',array(
'property_path' => false,
'required' => true,
))
;
$builder->addEventListener(FormEvents::POST_BIND,function($event){
$form = $event->getForm();
if(!$form->has('agreement')){
$form->addError(new FormError('利用規約に同意してください'));
}
});
}