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