我有一个包含FileType字段的表单。我已将multiple
选项设置为true
,因此用户可以同时上传多个文件。
$builder->add('myFile', FileType::class, [
'label' => 'upload file',
'multiple' => true,
])
以下是连接到此表单的实体中的相应属性:
/**
* @Assert\NotBlank()
* @Assert\File(mimeTypes = {"application/pdf", "application/x-pdf", "image/jpeg", "image/png"})
* @ORM\Column(type="array")
*/
private $myFile;
当我提交表单时,我收到错误:
UnexpectedTypeException in FileValidator.php line 168:
Expected argument of type "string", "array" given
我在File断言前添加了大括号,所以它看起来像这样:
* @Assert\File{}(mimeTypes = {"application/pdf", "application/x-pdf", "image/jpeg", "image/png"})
现在提交表单时并没有抱怨。但是也没有检查文件类型验证。
知道如何让文件类型适用于多个选定的文件吗?
答案 0 :(得分:0)
由于您正在验证File
数组,因此需要应用All
验证程序,该验证程序将在数组的每个元素上应用内部验证程序。
尝试使用以下内容:
/**
* @Assert\All({
* @Assert\NotBlank()
* @Assert\File(mimeTypes = {"application/pdf", "application/x-pdf", "image/jpeg", "image/png"})
* })
* @ORM\Column(type="array")
*/
private $myFile;