symfony2图像类型约束验证

时间:2014-03-05 18:08:08

标签: php validation symfony

我知道上传文件的首选方式是通过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为空。如果我不上传任何东西也一样。我搜索了网络和堆栈溢出的教程,如何在文件上传中使用约束,但没有成功。谁能解释我做错了什么?

1 个答案:

答案 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
                ...