Search code examples
laravelimageintervention

Update image in laravel won't work


I'm trying to update image in my laravel project but it won't save the image, I'm using intervention package

this is the result i use dd enter image description here

Controller:

 public function update(Request $request, $id)
{
    //
    $this->validate($request, [
        'student_name'=>'required|max:50',
        'lead_status'=>'required|max:50',
        'lead_source'=>'required|max:50',
        'avatar' =>'image',



        ]);


        $leads = Lead::findOrFail($id);
        $leads->student_name = $request->student_name;
        $leads->student_nric = $request->student_nric;
        $leads->gender = $request->gender;
        $leads->religion = $request->religion;
        $leads->race = $request->race;
        $leads->date_of_birth = $request->date_of_birth;
        $leads->Address = $request->Address;
        $leads->last_school_attended= $request->last_school_attended;
        $leads->last_grade_completed = $request->last_grade_completed;
        $leads->grade_appliying = $request->grade_appliying;



        if($request->hasFile('avatar')){

            $image=$request->file('avatar');
            $filename=time() . '.' . $image->getClientOriginalExtension();
            $location=public_path('images/' .$filename);
            Image::make($image)->resize(300, 300)->save($location);

            $leads->image=$filename;


            $leads->save();
       }
       else{


        $leads->save();

        session()->flash('notif','Application Saved     Successfully');
      return view('leads.edit')->with('leads', $leads);
    }

}

Edit.Blade View

    <div class="row">
<div class="col-sm-4 form-group">
<img src="/uploads/avatars/{{$leads->image}}" style="width:150px;height:150px;border-radius:50px;">

<form enctype="multipart/form-data" action="{{route('leads.update', $leads->id)}}" method="POST" >
{{ csrf_field() }}
{{ method_field('PUT') }}
<label> Upload Image</label>
<input type="file" name="avatar">
<input type="hidden"  name="_token" value="{{ csrf_token() }}">

</div>


<div class="col-sm-12">
   <h4 text-muted>CHILD'S INFORMATION</h3>
   <hr>

                  <div class="row">
                        <div class="col-sm-4 form-group">

                            <label>FULLNAME</label>

                            <input class="form-control" style="text-transform: uppercase;" type="text" name="student_name" value="{{$leads->student_name}}" placeholder="Enter FULLNAME.."  autocomplete="off">

                        </div>

Note: i will always end up null value on my image please point me to a correct tutorial if u have..

......................................................................................................................................


Solution

  • Add a hidden input type with your database variable in your edit blade and put the value of your hidden input name in else condition to save.

    <input type="hidden" name="old_image_name" 
    value="@if(isset($admin_details)){{$admin_details->image}} @endif"/>