【问题标题】:Multiple file validation: "This value should be of type string"多文件验证:“此值应为字符串类型”
【发布时间】:2020-08-18 17:47:27
【问题描述】:

我正在尝试在文件上传表单上使用 Symfony Validator(表单扩展名的验证),我收到以下错误消息:

messageTemplate: "This value should be of type string." from Symfony\Component\Validator\ConstraintViolation

在没有验证器的情况下上传效果很好,我无法弄清楚这条消息来自哪里。

这是我的 FormType,以 doc 的基本验证为例:

    {
        $builder
            ->add('file', FileType::class, [
                'label' => 'Choisir un fichier',
                'mapped' => false,
                'multiple' => true,
                'constraints' => [
                    new File([
                        'maxSize' => '1024k',
                        'mimeTypes' => [
                            'application/pdf',
                            'application/x-pdf',
                        ],
                        'mimeTypesMessage' => 'Please upload a valid PDF document',
                    ])
                ],
            ])
        ;
    }

如果我删除 maxSizemimeTypes 和/或 mimeTypesMessage 参数,我仍然会遇到同样的问题。

我不能在实体上使用注释(映射选项设置为false)。

【问题讨论】:

    标签: symfony validation file-upload symfony4 symfony-forms


    【解决方案1】:

    该错误是由于 File 约束需要一个文件名,但由于该字段具有选项 multiple 实际上正在接收一个数组。要解决它,您必须将约束包装在另一个 All 约束中,这会将内部约束(在本例中为 File)应用于数组的每个元素。

    您的代码应如下所示:

        ->add('file', FileType::class, [
          'label' => 'Choisir un fichier',
          'mapped' => false,
          'multiple' => true,
          'constraints' => [
            new All([
              'constraints' => [
                new File([
                  'maxSize' => '1024k',
                  'mimeTypesMessage' => 'Please upload a valid PDF document',
                  'mimeTypes' => [
                    'application/pdf',
                    'application/x-pdf'
                  ]
                ]),
              ],
            ]),
          ]
        ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-03
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多