将表单错误添加到Controller中重复的FormType

时间:2015-11-25 14:59:07

标签: forms symfony

我正在尝试向重复类型的邮件字段添加错误:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
         ->add('lastname', 'text', array(
                'required' => true,
                'trim' => true,
                'max_length' => 255,
                'attr' => array('placeholder' => 'lastname',
                )
            ))
         ->add('mail', 'repeated', array(
                'type' => 'email',
                'label' => 'email',
                'invalid_message' => 'Les Emails doivent correspondre',
                'options' => array('required' => true),
                'first_options' => array('label' => 'email',
                    'attr' => array('placeholder' => 'ph_mail_first',
                    )),
                'second_options' => array('label' => 'emailvalidation',
                    'attr' => array('placeholder' => 'ph_mail_second',
                        'requiered' => true
                    )),
                'required' => true,
                'trim' => true
            ))
}

public function getName()
{
    return 'AddUser';
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'csrf_protection' => true,
    ));
}

这就是我在控制器中所做的事情:

$sMessage = $this->container->get('translator')->trans('error');
$oForm->get('mail')->addError(new \Symfony\Component\Form\FormError($sMessage));

此方法正在使用除此之外的其他字段,不会显示错误消息。我也试过

  

获取('mail.first')并获取('mail.first_options')

这很好用:

$sMessage = $this->container->get('translator')->trans('error');
$oForm->get('lastname')->addError(new \Symfony\Component\Form\FormError($sMessage));

2 个答案:

答案 0 :(得分:1)

我设法找到了解决方法。我老实说不知道这是否是正确的解决方案,但它可以帮助有人解决这个问题。

$oForm['mail']['first']->addError(new \Symfony\Component\Form\FormError($sMessage));

答案 1 :(得分:0)

$oForm->get('mail')->get('first')