多文件上传时的Symfony验证

时间:2017-09-07 10:37:24

标签: php forms symfony file-upload symfony-validator

我有一个包含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"})

现在提交表单时并没有抱怨。但是也没有检查文件类型验证。

知道如何让文件类型适用于多个选定的文件吗?

1 个答案:

答案 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;