Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel Form Requests hasFile() not working

Tags:

php

laravel

I'm using Laravel form request to validate a array of input group. I need to check files using a loop for a custom validation. But it shows this error.

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

My HTML inputs (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]">

My Form Request (CreateUserFormRequest.php)

dd($this->request->hasFile('users');
like image 834
camille Avatar asked Oct 28 '25 07:10

camille


1 Answers

Inside FormRequest class if you want to check whether request has value or not then you can do like below

$this->has('users')

If you want to check request has file or not then

 $this->hasFile('logo')

also make sure input type is file

To check all data in request then

 $this->all()

For files make sure input type is file

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

Also make sure enctype="multipart/form-data" in form tag

<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>

and in Form request

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

If you are looking for file validation then you can do the following

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

and in your view

   <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') }}
like image 176
John Lobo Avatar answered Oct 30 '25 23:10

John Lobo