OctoberCMS图像(文件)验证无法正常工作

时间:2016-12-02 07:10:31

标签: octobercms

我正在尝试将图像(文件)验证放在我的模型文件中,但它似乎无法正常工作。以下是我的方案。

fields.yaml

fields:
    slider_image:
        label: 'Slider Image (jpg,png,gif) (1920 X 600)'
        mode: image
        fileTypes: 'jpeg,jpg,png,gif'
        useCaption: true
        thumbOptions:
            mode: crop
            extension: auto
        span: auto
        required: 1
        type: fileupload

Model.php

public $rules = [    
'slider_image' => 'required|mimes:jpeg,jpg,png,gif',
];

public $customMessages = [                
            'slider_image.required' => 'Please select slider image',                
            'slider_image.mimes' => 'Please select valid slider image',                
];

正如您可以在此处清楚地看到我有一个名为 slider_image 的文件上传选项,在我的 .yaml 文件中,我已将验证仅用于上传 jpeg, JPG,PNG,GIF

但问题在于我的验证规则。

即使我上传任何其他扩展程序文件(例如 .zip ),我总是会收到错误消息

  

请选择滑块图片

但它应该显示以下错误,因为我已经无效的扩展文件。

  

请选择有效的滑块图片

如果我没有上传任何图片,那么它应该显示第一个错误,如果我上传了无效图像,那么它应该显示第二个错误。

有人能告诉我当前的情况有什么问题吗?

此外,我想知道是否有任何验证规则可用于检查图像的高度宽度,并设置要上传的最小高度宽度规则,并在我们的模型文件中根据它放置验证消息。

谢谢

1 个答案:

答案 0 :(得分:0)

此处有两个级别的验证。一个是文件上传小部件的内置验证功能 - 即在小部件选项中的fields.yaml中配置的内容,即

    mode: image
    fileTypes: 'jpeg,jpg,png,gif'

,这发生在客户端。然后,fileuplod小部件将指出您(在客户端),如果您上传例如zip文件,则不允许此类型,因为:1。您已指定mode: image 。 2.您已指定filetypes: jpeg,jpg,png,gif。您的文件上传将不会被在客户端上接受,因此在提交表单时,文件输入将为空。

您的第二个级别的验证(由 Model.php 中的$规则指定),这是在表单提交之后发生的然后,服务器端将获得文件输入(因为上传小部件甚至没有转发您尝试上传的文件类型),因此将回答“请”选择滑块图像'。

因此验证器工作正常。一切都正常。但是,如果您希望 Model.php 中的mime验证能够响应不需要的文件类型,则必须删除

fileTypes: 'jpeg,jpg,png,gif'

来自 fields.yaml ,因为否则他们甚至无法完成您的模型验证。

对于您的第二个问题:不,没有针对图像的正确高度和宽度的内置验证。但你可以指定" imageHeight"和" imageWidth"在您的fields.yaml中自动调整上传图像的大小。