首页 > 解决方案 > Laravel 表单请求 hasFile() 不起作用

问题描述

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

Error
Call to undefined method Symfony\Component\HttpFoundation\ParameterBag::hasFile()

我的 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]">

我的表单请求 (CreateUserFormRequest.php)

dd($this->request->hasFile('users');

标签: phplaravel

解决方案


如果你想在FormRequest课堂上检查请求是否有价值,那么你可以像下面那样做

$this->has('users')

如果你想检查请求是否有文件然后

 $this->hasFile('logo')

还要确保输入类型是文件

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

 $this->all()

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

<input type="file"  name="users[1][profile_pic]">

还要确保 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>

并在表格请求中

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

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

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

在你看来

   <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') }}

推荐阅读