Forms symfony4 HandlerRequest无法正确使用表单中的文件类型
我试图验证我的表单,它有一个文件类型字段。 我使用断言来验证表单。验证对除fileType字段外的所有字段都正常工作。 它只允许上传jpg和png文件,但如果我尝试上传例如PDF文件,它会说我的表格是有效的 这是数据库中保存文件名的字段的代码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"
/**
* @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来看看它