Symfony 嵌入式集合的嵌入式集合-isValid问题
假设我有一个Symfony 嵌入式集合的嵌入式集合-isValid问题,symfony,Symfony,假设我有一个FooType和BarType(集合;级联验证设置为true),它本身有一个FooBarType(集合;级联验证设置为true) 所以 现在的问题是,如果我从GUI向fooBar集合添加一个由于有效约束而无效的元素,那么错误将附加到整个集合(而不是集合的元素字段),并且元素声明为有效(从探查器中看到)。如果我从GUI向fooBar集合添加了多个元素,集合仍然无效,无效状态(错误)仍然附加到集合中,第一个元素仍然声称有效,但其他元素附加了错误(这是我想要的) 问题: 为什么会有这样的
FooType
和BarType
(集合;级联验证设置为true),它本身有一个FooBarType
(集合;级联验证设置为true)
所以
现在的问题是,如果我从GUI向
fooBar
集合添加一个由于有效约束而无效的元素,那么错误将附加到整个集合(而不是集合的元素字段),并且元素声明为有效(从探查器中看到)。如果我从GUI向fooBar
集合添加了多个元素,集合仍然无效,无效状态(错误)仍然附加到集合中,第一个元素仍然声称有效,但其他元素附加了错误(这是我想要的)
问题:
为什么会有这样的行为?有什么想法吗
附加信息 这是探查器中显示的无效路径 对象(Symfony\Component\Form\Form).data.bar[0].foobar[0].fieldName= 空的 它获得了实际值,但“绑定”到集合而不是字段元素 Symfony版本:2.7解决方案非常“简单”,但很难找到 我问自己,删除这个问题还是直接回答好。因为我很确定这个错误也会发生在其他人身上,而且“调查”也不是那么容易,所以我决定回答这个问题 错误 错误出现在集合原型javascript及其索引上。我是说
addTagForm()
javascript函数,在我的例子中,它是定制的,以达到我所需要的。问题是我在索引计算上犯了一个错误,因此每个新集合都从1开始,而不是从0开始
所以,当表单验证组件试图将错误附加到右侧字段时,会产生
对象(Symfony\Component\Form\Form).data.bar[0].foobar[0].fieldName=
空的
未找到索引为0的字段(在foobar
级别),并且错误附加到其父项(集合)
所以,当我向集合中添加多个元素时,我看到的每个错误都是相对于“other”字段的(以n-1的方式)
我是如何发现这个错误的
使用探查器>表单,在左列中,您可以发现所有附加了错误的表单字段。通过观察索引,您可以找到我所说的内容。解决方案非常“简单”,但很难找到
我问自己,删除这个问题还是直接回答好。因为我很确定这个错误也会发生在其他人身上,而且“调查”也不是那么容易,所以我决定回答这个问题
错误
错误出现在集合原型javascript及其索引上。我是说
addTagForm()
javascript函数,在我的例子中,它是定制的,以达到我所需要的。问题是我在索引计算上犯了一个错误,因此每个新集合都从1开始,而不是从0开始
所以,当表单验证组件试图将错误附加到右侧字段时,会产生
对象(Symfony\Component\Form\Form).data.bar[0].foobar[0].fieldName=
空的
未找到索引为0的字段(在foobar
级别),并且错误附加到其父项(集合)
所以,当我向集合中添加多个元素时,我看到的每个错误都是相对于“other”字段的(以n-1的方式)
我是如何发现这个错误的
使用探查器>表单,在左列中,您可以发现所有附加了错误的表单字段。通过观察索引,你可以发现我在说什么
//FooType
$builder
[...]
->add('bar', 'collection', [
//...
'type' => new BarType()
'error_bubbling' => false,
'allow_add' => true,
'allow_delete' => true,
'required' => false,
'by_reference' => false,
]
);
//BarType
$builder
[...]
->add('fooBar', 'collection', [
//...
'type' => new FooBarType()
'error_bubbling' => false,
'allow_add' => true,
'allow_delete' => true,
'required' => false,
'by_reference' => false,
]
);