我知道上传文件的首选方式是通过Doctrine,如本书所述,但我需要将图像数据保存在xml文件中,我也喜欢约束验证器。不必为它们编写太多代码。无论如何,我陷入了Image约束,我不知道我是在做正确的事情。
我的validator.yml如下...
Frizer\AdminBundle\Entity\UploadedImage:
properties:
image:
- Image:
notFoundMessage: Image not uploaded
uploadErrorMessage: The image could not upload. Try again
uploadIniSizeErrorMessage: Image has to have more that 5M
mimeTypes: [image/jpeg, image/jpg, image/png]
mimeTypesMessage: Image has to be either jpg, jpeg or png format
minWidth: 500
minHeight: 500
minWidthMessage: Image has to be 500/500 px
minHeightMessage: Image has to be 500/500px
maxSize: 5M
maxSizeMessage: Image has to have more than 5M
validate()方法接受一个UploadedImage对象,该对象具有$ image属性和具有File type属性的该属性的setter方法。构造函数如下......
$uploadedImage = new UploadedImage();
$validator = $this->get('validator');
$errors = $validator->validate($uploadedImage);
var_dump($errors);
如果我上传的图片大于5M,则$ errors为空。如果我不上传任何东西也一样。我搜索了网络和堆栈溢出的教程,如何在文件上传中使用约束,但没有成功。谁能解释我做错了什么?
答案 0 :(得分:0)
根据你是如何创建一个新的UploadedImage实体并尝试立即验证它,我怀疑你没有正确处理表单数据。
查看Symfony2 file upload step by step - 它也概述了上传,但使用注释进行验证。
您不必使用doctrine,因此您可以忽略任何@ORM注释。在请求完成之前,您只需要输出您需要输出的任何内容。
另外,我不确定它是如何粘贴的,但检查validation.yml中的缩进级别(notFoundMessage,uploadErrorMessage等,没有正确缩进)
Frizer\AdminBundle\Entity\UploadedImage:
properties:
image:
- Image:
notFoundMessage: Image not uploaded
...