如果字段是输入类型文件,laravel 中的 required_if 验证不会给出错误

Posted

技术标签:

【中文标题】如果字段是输入类型文件,laravel 中的 required_if 验证不会给出错误【英文标题】:required_if validation in laravel not give error if filed is input type file 【发布时间】:2019-02-18 21:27:18 【问题描述】:

我有一个表单,其中有 5 个文本字段和 2 个输入类型文件字段。 对于所有 7 个字段,我已经在 laravel 中编写了自定义验证规则,如果类型是业务,我希望所有字段都是必需的,所以我在所有字段中使用 required_if,对于文本字段它正在工作,但对于图像(输入类型文件)它不起作用它总是认为文件存在于请求中,并且如果在我将文件更改为必需文件时未上传文件,它不会给出任何错误,而它只会给我输入类型文件的错误。

public function rules()

    return [
        'country'       => 'required_if:type,business',
        'country2'      => 'required_if:type,business',
        'company'       => 'required_if:type,business',
        'number' => 'required_if:type,business',
        'expiry' => 'required_if:type,business',
        'profile_pic'       => 'required_if:type,business  |  mimes:jpeg,jpg,png,pdf',
        'document_pic'      => 'required_if:type,business  |  mimes:jpeg,jpg,png,pdf',
    ];

【问题讨论】:

对于国家、国家 2、公司、号码、到期其工作但仅用于图像它不会给我错误。 阅读此Validating Arrays。你可以使用'required_if:type,business | image' 【参考方案1】:

问题是由于额外的空间无效规则而出现的。 删除了所需 if 和 mime 类型之间的空格,使其正常工作。

public function rules()

    return [
        'country'       => 'required_if:type,business',
        'country2'      => 'required_if:type,business',
        'company'       => 'required_if:type,business',
        'number' => 'required_if:type,business',
        'expiry' => 'required_if:type,business',
        'profile_pic'       => 'required_if:type,business|mimes:jpeg,jpg,png,pdf',
        'document_pic'      => 'required_if:type,business|mimes:jpeg,jpg,png,pdf',
    ];

【讨论】:

【参考方案2】:

你可以试试这个:

public function rules()

    return [
        'country'       => 'required_if:type,business',
        'country2'      => 'required_if:type,business',
        'company'       => 'required_if:type,business',
        'number'        => 'required_if:type,business',
        'expiry'        => 'required_if:type,business',
        'profile_pic'   => 'required_if:type,business|image',
        'document_pic'  => 'required_if:type,business|image',
    ];

也可以编辑我的:https://laravel.com/docs/5.3/validation#rule-mimes

【讨论】:

以上是关于如果字段是输入类型文件,laravel 中的 required_if 验证不会给出错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:有时规则不适用于输入类型=文件

如果文件在 laravel 中上传,则文件 mime 类型验证

用于 Laravel 应用程序的 phpmyadmin 中手动输入的“密码”字段的数据类型?

Laravel 输入:get() 不工作

laravel迁移文件中字段方法对应的数据库类型

html输入字段的电子邮件格式与laravel电子邮件验证不一致