带有验证组的Symfony 2表单,错误映射到错误的属性?

带有验证组的Symfony 2表单,错误映射到错误的属性?,symfony,symfony-forms,symfony-2.4,Symfony,Symfony Forms,Symfony 2.4,以前从未有过这个问题 用电话填写表格,留下姓氏空白 提交表单(验证组变为默认值和创建) 错误“Last name is required.”映射到错误的$phone字段,而应映射到$lastName自身属性 你能复制同样的问题吗 $phone属性位于创建验证组中,而$phone位于默认隐式组中: class User { /** * @Assert\NotBlank(groups={"Create"}, message="Last name is required.")

以前从未有过这个问题

  • 用电话填写表格,留下姓氏空白
  • 提交表单(验证组变为
    默认值
    创建
  • 错误“Last name is required.”映射到错误的
    $phone
    字段,而应映射到
    $lastName
    自身属性

你能复制同样的问题吗

$phone
属性位于
创建
验证组中,而$phone位于
默认
隐式组中:

class User
{
    /**
     * @Assert\NotBlank(groups={"Create"}, message="Last name is required.")
     *
     * @var string
     */
    protected $lastName;

    /**
     * @Assert\NotBlank(message="Phone is required.")
     *
     * @var string
     */
    protected $phone;
}
我根据提交的数据确定验证组:

class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('lastName', 'text');
        $builder->add('phone', 'text');
        $builder->add('submit', 'submit');
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults([
            'required' => false,
            'data_class' => 'Acme\HelloBundle\Entity\User',
            'validation_groups' => function (FormInterface $form) {    
                return null === $form->getData()->getId()
                    ? ['Default', 'Create']
                    : ['Default', 'Edit'];
            }
        ]);
    }
}
警告:验证API 2.5存在错误 花了几个小时,但我找到了!实际上,这是新的验证程序API 2.5的一个问题()

临时解决方案(编译器通过):


您可以编辑config.yml将API设置为2.4,而不是使用编译器过程:

validation:
    enable_annotations: true
    api: 2.4 # default is auto which sets API 2.5 BC

在2.5版本中解决该错误后,只需删除api设置,您就可以回到2.5版本的向后兼容版本。

我认为这是更好的答案,因为在api 2.5版本修复之前,您有更多的控制权。只是也有这个错误,并正在搜索我做错了什么,因为这是一个非常奇怪的错误!
validation:
    enable_annotations: true
    api: 2.4 # default is auto which sets API 2.5 BC