Forms symfony4 HandlerRequest无法正确使用表单中的文件类型

Forms symfony4 HandlerRequest无法正确使用表单中的文件类型,forms,symfony4,assert,file-type,Forms,Symfony4,Assert,File Type,我试图验证我的表单,它有一个文件类型字段。 我使用断言来验证表单。验证对除fileType字段外的所有字段都正常工作。 它只允许上传jpg和png文件,但如果我尝试上传例如PDF文件,它会说我的表格是有效的 这是数据库中保存文件名的字段的代码 /** * @ORM\Column(name="imgHomepage", type="string") * @Assert\File( * maxSize = "1024k", * mimeTypes = {"image/jpg"

我试图验证我的表单,它有一个文件类型字段。 我使用断言来验证表单。验证对除fileType字段外的所有字段都正常工作。 它只允许上传jpg和png文件,但如果我尝试上传例如PDF文件,它会说我的表格是有效的

这是数据库中保存文件名的字段的代码

/**
 * @ORM\Column(name="imgHomepage", type="string")
 * @Assert\File(
 *     maxSize = "1024k",
 *     mimeTypes = {"image/jpg", "image/jpeg", "image/png"},
 *     mimeTypesMessage = "Images must be  jpg,  jpeg or  png"
 * )
 */
private $imgHomepage = '';
这是添加到我的实体的formtype中的我的文件类型的代码

->add('imgHomepage', FileType::class, [
            'mapped' => false,
            'data_class' => null,
            'required' => false,
            'error_bubbling' => true
 ])
这是我的控制器的代码

$influencer = self::getInfluencerById($influencerId);
$influencerShowForm = self::CreateInfluencerForm($influencer);
$influencerShowForm->handleRequest($request);
if ($influencerShowForm->isSubmitted() && $influencerShowForm->isValid()) {
  // handle form
}

我认为这是因为字段没有映射,所以它不会根据Assert注释所在的实体对其进行验证。此外,该列是一个字符串,并且断言它必须是一个文件,您应该为未定义(未映射)列的文件本身使用不同的属性

在FormType中添加
文件类型
字段时,请尝试设置
约束
选项:

use Symfony\Component\Validator\Constraints as Assert;

...

->add('imgHomepage', FileType::class, [
            'mapped' => false,
            'data_class' => null,
            'required' => false,
            'error_bubbling' => true,
            'constraints' => new Assert\File([
              'maxSize' => '1024k',
              'mimeTypes' => ["image/jpg", "image/jpeg", "image/png"],
              'mimeTypesMessage' => "Images must be  jpg,  jpeg or  png",
            ])
 ])

Arleigh Hix,谢谢你的回答,但这似乎对我不起作用。我暂时不想在这个问题上浪费时间。我可能会在几周后用一个frehs head:p来看看它