2014-03-05 104 views
1

我知道上传文件的首选方式是通过Doctrine,如书中所述,但我需要将图像数据保存在xml文件中,我也喜欢约束验证程序。为他们写的代码不多。无论如何,我卡在图像约束,我不知道我做的一切都是正确的。symfony2图像类型约束验证

我validator.yml是folows ...

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对象。构造函数如下...

$uploadedImage = new UploadedImage(); 

    $validator = $this->get('validator'); 
    $errors = $validator->validate($uploadedImage); 

    var_dump($errors); 

如果我上传的图片大于5M,则$ errors为空。同样的事情,如果我不上传任何东西。我搜索了关于如何在文件上传中使用约束,但没有成功的教程,引发了网络和堆栈溢出问题。任何人都可以解释我做错了什么?

回答

0

根据你如何创建一个新的UploadedImage实体来判断,并试图立即验证它,我怀疑你没有正确处理表单数据。

看看Symfony2 file upload step by step - 它概述了上传过程,但使用注释进行验证。

您不必使用原则,因此您可以忽略任何@ORM注释。在请求完成之前,您只需输出需要输出的任何内容。

而且,我不知道如果它是如何在粘贴,但检查中validation.yml您的缩进层次(notFoundMessage,uploadErrorMessage,等等,都是不缩进正确)

Frizer\AdminBundle\Entity\UploadedImage: 
    properties: 
     image: 
      - Image: 
       notFoundMessage: Image not uploaded 
       ... 
+0

但是,这就是它在书中说。创建一个映射对象,制作validator.yml并将该对象放入validate()方法中。而已。我是否必须在UploadedImage对象中添加其他代码,例如mimeType字段或上传的图像路径?目前,它只有$ image属性和setter方法。另外,我编辑了这个intendation。如果intendation是问题,我认为这将是一个错误。 –