即使没有上传输入文件,也总是调用Laravel mimes验证(未使用必需规则)

时间:2017-05-30 14:31:21

标签: php laravel validation mime

我只对文件输入字段使用了单一验证规则。那是哑剧规则。如果没有上传文件,我想跳过此规则,所以我没有使用“必需”规则。但即使没有上传文件,它也始终显示mime类型的消息。我刚刚添加了测试所需的规则,当时它显示了所需的错误消息。只有在使用带有jquery.form.js

的ajax提交表单时才会出现此问题

4 个答案:

答案 0 :(得分:1)

您可以使用}验证类型。

sometimes

存在时验证

在某些情况下,只有在输入数组中存在该字段时,您可能希望对字段运行验证检查。要快速完成此操作,请将有时规则添加到规则列表中。

Official Laravel docs

答案 1 :(得分:1)

您可以使用'file' => 'sometimes|mimes:jpeg,png' 规则。

sometimes

您可以在https://laravel.com/docs/5.4/validation#conditionally-adding-rules

查看更多相关信息

答案 2 :(得分:0)

我最近在ajax上传中也遇到了同样的问题,并使用来处理文件验证

public function rules()
{
    $rules = [
        'invitation_message' => 'required'
    ];

    if (request()->hasFile('invitation_excel_sheet')) {
        $rules = array_merge($rules, [
            'invitation_excel_sheet' => 'mimes:xlsx,csv'
        ]);
    }

    return $rules;
}

答案 3 :(得分:0)

另一种方法是使用exclude_if

public function rules()
{
    return [
        'link' => 'sometimes',
        'newPdf' => 'exclude_if:link,null|mimes:pdf',
    ];
}