Laravel 表单请求 hasFile() 不起作用

cam*_*lle 4 php laravel

我正在使用 Laravel 表单请求来验证输入组数组。我需要使用循环检查文件以进行自定义验证。但它显示了这个错误。

Error
Call to undefined method Symfony\Component\HttpFoundation\ParameterBag::hasFile()
Run Code Online (Sandbox Code Playgroud)

我的 HTML 输入 (createUser.blade.php)

<input type="text"  name="users[0][name]">
<input type="number"  name="users[0][age]">
<input type="file"  name="users[0][profile_pic]">

<input type="text"  name="users[1][name]">
<input type="number"  name="users[1][age]">
<input type="file"  name="users[1][profile_pic]">
Run Code Online (Sandbox Code Playgroud)

我的表单请求 (CreateUserFormRequest.php)

dd($this->request->hasFile('users');
Run Code Online (Sandbox Code Playgroud)

Joh*_*obo 5

在类内部FormRequest,如果你想检查请求是否有价值,那么你可以像下面这样做

$this->has('users')
Run Code Online (Sandbox Code Playgroud)

如果您想检查请求是否有文件,那么

 $this->hasFile('logo')
Run Code Online (Sandbox Code Playgroud)

还要确保输入类型是文件

然后检查请求中的所有数据

 $this->all()
Run Code Online (Sandbox Code Playgroud)

对于文件,请确保输入类型是文件

<input type="file"  name="users[1][profile_pic]">
Run Code Online (Sandbox Code Playgroud)

还要确保 enctype="multipart/form-data"在表单标签中

<form method="POST" action="" enctype="multipart/form-data">

Updated
<form method="POST" action="{{route("testing")}}" enctype="multipart/form-data">
@csrf
    <input type="number"  name="users[0][name]">
    <input type="number"  name="users[0][age]">
    <input type="file"  name="users[0][profile_pic]">

    <input type="number"  name="users[1][name]">
    <input type="number"  name="users[1][age]">
    <input type="file"  name="users[1][profile_pic]">
<button type="submit">Submit</button>

</form>
Run Code Online (Sandbox Code Playgroud)

并在表格请求中

 foreach ($this->users as $key=>$value){
            if($value['profile_pic']!=null){
                dump($value['profile_pic']);
            }
        }
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找文件验证,那么您可以执行以下操作

public function rules()
    {
        return [
            'users.*.profile_pic'=>'required|file'
        ];
    }
Run Code Online (Sandbox Code Playgroud)

在你看来

   <input type="file"  name="users[0][profile_pic]">
    {{ $errors->first('users.0.profile_pic') }}

    <input type="file"  name="users[1][profile_pic]">
    {{ $errors->first('users.1.profile_pic') }}
Run Code Online (Sandbox Code Playgroud)