Php Symfony 2.7-电子邮件验证YML不起作用(忽略所有电子邮件行)

Php Symfony 2.7-电子邮件验证YML不起作用(忽略所有电子邮件行),php,forms,validation,symfony,email,Php,Forms,Validation,Symfony,Email,我正在尝试创建一个symfony表单,如果没有提交电子邮件地址(或格式不正确的电子邮件地址),该表单将被拒绝。 这是一个正在发生的事情的例子 我在电子邮件输入中没有文本的情况下提交:提交失败,但没有 空白错误(良好) 我提交了“Fajncainanf”,但它在 非空错误,当它因电子邮件错误而失败时(和 它显然不是空的,所以这毫无意义……) 我从YML中删除NotBlank验证检查并提交“Fajncainanf”,它成功地提交了表单。这难道不能证明电子邮件的验证不知何故被破坏了吗 请参阅下面的代码

我正在尝试创建一个symfony表单,如果没有提交电子邮件地址(或格式不正确的电子邮件地址),该表单将被拒绝。 这是一个正在发生的事情的例子

  • 我在电子邮件输入中没有文本的情况下提交:提交失败,但没有
    空白错误(良好)
  • 我提交了“Fajncainanf”,但它在 非空错误,当它因电子邮件错误而失败时(和 它显然不是空的,所以这毫无意义……)
  • 我从YML中删除NotBlank验证检查并提交“Fajncainanf”,它成功地提交了表单。这难道不能证明电子邮件的验证不知何故被破坏了吗
  • 请参阅下面的代码

    建造商:

    $builder
        ->add('emailAddress', 'email', 
            array(
                'label' => 'Email Address:',
                'data' => $user->getEmailAddress(),
                'required' => true,
                )
            )
    
    YML:


    任何帮助都将不胜感激

    您可以直接在生成器中使用约束进行尝试。我喜欢把所有的东西放在一个地方,而不是放在单独的文件里

    use Symfony\Component\Validator\Constraints\Email;
    
    然后您可以在生成器中使用它,如下所示:

    $builder
        ->add('email', null, array(
            'required' => false,
            'constraints' => array(
                new Email()
            )
        ));
    

    对我来说,这要容易得多,我希望这能解决你的问题,这是你使用约束的一种方式

    您可以直接在生成器中使用约束进行尝试。我喜欢把所有的东西放在一个地方,而不是放在单独的文件里

    use Symfony\Component\Validator\Constraints\Email;
    
    然后您可以在生成器中使用它,如下所示:

    $builder
        ->add('email', null, array(
            'required' => false,
            'constraints' => array(
                new Email()
            )
        ));
    

    对我来说,这要容易得多,我希望这能解决你的问题,这是你使用约束的一种方式

    我们有一个中心位置,用于将验证与表单分开存储(这将涉及到更大的修改任务),因此这不是一个真正的选项。奇怪的是,虽然这会产生正确的电子邮件错误,但键入“sdcacacbref”也会产生非空错误。。。这没有任何意义。如果您更改订单并将电子邮件验证放在电子邮件验证之前该怎么办?即使删除NotBlank也只允许表单成功提交(即使不应该),我们有一个中心位置,用于将验证与表单分开存储(这将涉及更大的更改承诺)所以这不是一个真正的选择。奇怪的是,虽然这会产生正确的电子邮件错误,但键入“sdcacacbref”也会产生非空错误。。。这没有任何意义。如果您更改顺序并将电子邮件验证放在电子邮件验证之前该怎么办?即使删除NotBlank也只允许表单成功提交(即使不应该提交),只是为了说明,为什么您使用YML而不是批注?只是为了说明,为什么您使用YML而不是批注?