【问题标题】:OctoberCMS image(file) validation not working properlyOctoberCMS 图像(文件)验证无法正常工作
【发布时间】:2016-12-02 07:10:30
【问题描述】:

我正在尝试将图像(文件)验证放在我的模型文件中,但它似乎没有按我的意愿工作。下面是我的场景。

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),我总是会收到一条错误消息,提示

请选择滑块图片

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

请选择有效的滑块图片

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

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

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

谢谢

【问题讨论】:

  • 仅供参考,我也在 October GIT repoOctober Support Forum 上问过这个问题并等待帮助。
  • 我认为这是“概念”的问题,因为如果文件与文件类型不匹配,则该文件永远不会上传到服务器,因此您无法触发 mime 验证,但我认为您可以覆盖afterValidate() 方法并自己进行自定义验证,然后抛出 throw new ValidationException($validation);
  • 我明白了。但我不知道如何使用 afterValidate() 来解决这个问题。如果您可以指导我或提供我的代码块,因为老实说,我完全无法实现这部分:(

标签: octobercms


【解决方案1】:

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

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

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

所以您的 第二 级验证(由 Model.php 中的 $rules 指定),这是在表单提交后进行的然后服务器端会得到一个empty文件输入(因为上传小部件甚至没有转发您尝试上传的文件类型),因此会回答“请选择滑块图像'。

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

fileTypes: 'jpeg,jpg,png,gif'

来自您的 fields.yaml,否则它们甚至无法通过您的模型验证。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多