php 即使没有上传输入文件,也始终调用Laravel mime验证(未使用必需规则)

k4ymrczo  于 2022-11-28  发布在  PHP
关注(0)|答案(4)|浏览(91)

我只对文件输入字段使用了一个验证规则。这是mimes规则。如果没有上传文件,我想跳过这个规则,所以我没有使用'required'规则。但是即使没有上传文件,它也总是显示mime类型的消息。我刚刚添加了测试所需的规则,当时它显示了所需的错误消息。这个问题只在使用jquery.form.js的 AJAX 提交表单时出现

rks48beu

rks48beu1#

您可以使用sometimes验证类型。

'file' => 'sometimes|mimes:jpeg,png'

存在时正在验证

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

oug3syen

oug3syen2#

您可以使用sometimes规则。

'photo' => 'sometimes|mimes:jpeg,bmp,png'

您可以在www.example.com查看更多信息https://laravel.com/docs/5.4/validation#conditionally-adding-rules

evrscar2

evrscar23#

我最近在 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;
}
nzkunb0c

nzkunb0c4#

另一种方法是在模型中使用exclude_if

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

相关问题