有什么方法可以验证有时是 File(image) && 有时是 String(Src of same image) 的字段

问题描述

我的问题: 我正在使用 Laravel 框架 PHP

我想验证一个字段,我的字段有时是文件(图像),有时是字符串(同一图像的 src)

Laravel 有什么捷径或解决方案吗???

解决方法

您的问题的具体细节并不完全清楚,但我认为您可以通过执行以下操作来管理您想要的:

$request->validate([
   'stringOrFile' => [
        function ($attribute,$value,$fail) {
            if (!is_string($value) && !($value instanceof UploadedFile)) {
                $fail('The '.$attribute.' must either be a string or file.');
            }
        }
 
   ]

]);

其中 UploadedFile 指的是 \Illuminate\Http\UploadedFile,而 stringOrFile 指的是您正在验证的输入的名称。

但是,如果可能,请根据输入的内容为输入使用不同的名称,以便您可以对每个不同的输入使用更复杂的验证规则。

有关此类验证规则的更多详细信息in the manual

,

我使用此代码示例。参加对您有用的任何部分。

$msg=[
        'name.required'=>'<span class="badge">Name</span> is Required','username.required'=>'<span class="badge">User Name</span> is Required','born.required'=>'<span class="badge">User Name</span> is Required'
    ];


    $request->validate([
        'name'=>'required|string|min:2|max:30','username'=>'required|string|min:3|max:20','born'=>'required|date','image'=>'nullable|image|mimes:jpg,jpeg,bmp,png'
    ],$msg);

$msg 错误

您应该创建错误页面刀片名称错误包含

@if($errors->any())
{!! implode('',$errors->all('<div class="alert alert-danger">:message</div>')) !!}
@endif

///

在包含验证表单的刀片中写入顶部代码

@include('error')

如果存在任何错误,则包含错误页面以显示错误