我有一个包含4个未映射字段的表单。每个字段都可以包含[0,n]文件。
这是我的FormType(效果很好):
$builder
->add('identityProofs', CollectionType::class, array(
'entry_type' => FileType::class, 'allow_add' => true, 'prototype' => true, 'label' => false))
->add('articlesOfAssociations', CollectionType::class, array(
'entry_type' => FileType::class, 'allow_add' => true, 'prototype' => true, 'label' => false))
->add('registrationProofs', CollectionType::class, array(
'entry_type' => FileType::class, 'allow_add' => true, 'prototype' => true, 'label' => false))
->add('shareolderDeclarations', CollectionType::class, array(
'entry_type' => FileType::class, 'allow_add' => true, 'prototype' => true, 'label' => false))
;
对于每个文件,我需要添加像maxSize这样的约束。我不能在不使用注释的情况下找到任何关于它的文档(我无法使用,因为我没有使用映射类)。我是否需要添加一个类,或者我可以做类似的事情(已经尝试过,它不起作用):
->add('articlesOfAssociations', CollectionType::class, array(
'constraints' => array(
new Collection(
['fields' => ['File' => new File(['maxSize' => '10k'])]])),
答案 0 :(得分:1)
您需要将约束传递给内部表单类型(文件),而不是父级(集合)。
为此,您应该使用集合类型的entry_options
选项。此选项的值将传递到条目表单类型的每个实例(在您的案例中为FileType
)。所以它可能是这样的:
->add('articlesOfAssociations', CollectionType::class, array(
'entry_options' => array(
'constraints' => array(
new File(['maxSize' => '10k']),
),
),