Zend framework ZF 2.4文件验证器需要假密码';行不通

Zend framework ZF 2.4文件验证器需要假密码';行不通,zend-framework,zend-framework2,zend-form,zend-validate,zend-file,Zend Framework,Zend Framework2,Zend Form,Zend Validate,Zend File,今天我更新到ZF2.4以使用浮点验证器,但不幸的是,我意识到我的文件上载表单字段会给出意外的错误消息 这是我的表单对象 $this->add([ 'name' => 'profileimage', 'type' => '\Zend\Form\Element\File', 'attributes' => [ 'id' => 'profileimage',

今天我更新到ZF2.4以使用浮点验证器,但不幸的是,我意识到我的文件上载表单字段会给出意外的错误消息

这是我的表单对象

$this->add([
            'name' => 'profileimage',
            'type' => '\Zend\Form\Element\File',
            'attributes' => [
                'id' => 'profileimage',
                'class' => 'styled',
            ],
                ]
        );
这是我的验证器

$inputFilter->add([
                'name' => 'profileimage',
                'required' => false,
                'allow_empty' => true,
                'priority' => 300,
                'filters' => [
                    ['name' => 'StripTags'],
                    ['name' => 'StringTrim'],
                ],
                'validators' => [
                    [
                        'name' => '\Zend\Validator\File\IsImage',
                    ],
                    [
                        'name' => '\Zend\Validator\File\UploadFile',
                    ],
                    [
                        'name' => '\Zend\Validator\File\ImageSize',
                        'options' => [
                            'minWidth' => 300,
                            'minHeight' => 300,
                        ]
                    ],
                    [
                        'name' => '\Zend\Validator\File\Size',
                        'options' => [
                            'max' => '20MB',
                        ]
                    ],
                ]
            ]);
如您所见,图像上载字段不是必需的,可能为空。但在我的表格中,我发现了以下错误:

array (size=1)
  'profileimage' => 
    array (size=4)
      'fileIsImageNotReadable' => string 'File is not readable or does not exist' (length=38)
      'fileUploadFileErrorNoFile' => string 'File was not uploaded' (length=21)
      'fileImageSizeNotReadable' => string 'File is not readable or does not exist' (length=38)
      'fileSizeNotFound' => string 'File is not readable or does not exist' (length=38)
我如何处理这个问题?我需要将此字段设置为可选。

更改过滤器

$inputFilter->add([
            'name' => 'profileimage',
            'type' => '\Zend\InputFilter\FileInput',
            'required' => false,
            'allow_empty' => true,
            'priority' => 300,
            'filters' => [
                ['name' => 'StripTags'],
                ['name' => 'StringTrim'],
            ],
            'validators' => [
                [
                    'name' => '\Zend\Validator\File\IsImage',
                ],
                [
                    'name' => '\Zend\Validator\File\UploadFile',
                ],
                [
                    'name' => '\Zend\Validator\File\ImageSize',
                    'options' => [
                        'minWidth' => 300,
                        'minHeight' => 300,
                    ]
                ],
                [
                    'name' => '\Zend\Validator\File\Size',
                    'options' => [
                        'max' => '20MB',
                    ]
                ],
            ]
        ]);

请在此处阅读:

这里的技巧是指定\Zend\InputFilter\FileInput的类型。在上面的链接中可以看到一些关键的区别。