使用实体对表单内的 FormType 进行验证
Validation using entity for a FormType inside a form
我有两个实体:Company
和 Location
。一家公司有一个地点(而一个地点可能 "have" 多家公司)。现在,当用户创建公司时,我希望 him/her 能够以相同的形式创建位置。所以我使用以下
$builder
->add('name', TextType::class, ['label' => 'company.name'])
->add('size', IntegerType::class, ['label' => 'company.size'])
->add( $builder->create('location', FormType::class, [
'label' => 'company.location',
'by_reference' => true,
'data_class' => 'AppBundle\Entity\Location',
])
->add('street', TextType::class, [
'label' => 'location.street',
])
->add('number', TextType::class, [
'label' => 'location.number',
])
这在创建表单时效果很好。现在要进行验证了。我在各自的文件中为两个实体添加了 @Assert
注释。虽然 company
验证有效,但 location
不会自动验证。
我设法通过向新的 $builder->create('location')
元素添加 constraint
属性来获得验证,但这意味着代码重复(在实体中一次,在每个需要 [=15= 的表单中至少一次) ]).
我怎样才能解决这个问题,以便使用实体的注释验证表单?
默认情况下,验证不会遍历对象或集合的属性。使用 valid constraint:
http://symfony.com/doc/current/reference/constraints/Valid.html
您也可以为集合设置遍历选项。
我有两个实体:Company
和 Location
。一家公司有一个地点(而一个地点可能 "have" 多家公司)。现在,当用户创建公司时,我希望 him/her 能够以相同的形式创建位置。所以我使用以下
$builder
->add('name', TextType::class, ['label' => 'company.name'])
->add('size', IntegerType::class, ['label' => 'company.size'])
->add( $builder->create('location', FormType::class, [
'label' => 'company.location',
'by_reference' => true,
'data_class' => 'AppBundle\Entity\Location',
])
->add('street', TextType::class, [
'label' => 'location.street',
])
->add('number', TextType::class, [
'label' => 'location.number',
])
这在创建表单时效果很好。现在要进行验证了。我在各自的文件中为两个实体添加了 @Assert
注释。虽然 company
验证有效,但 location
不会自动验证。
我设法通过向新的 $builder->create('location')
元素添加 constraint
属性来获得验证,但这意味着代码重复(在实体中一次,在每个需要 [=15= 的表单中至少一次) ]).
我怎样才能解决这个问题,以便使用实体的注释验证表单?
默认情况下,验证不会遍历对象或集合的属性。使用 valid constraint:
http://symfony.com/doc/current/reference/constraints/Valid.html
您也可以为集合设置遍历选项。