Search code examples
laraveleloquentlaravel-routinglaravel-5.7

Data Not Submitting to Database


I'm making a contact page but the form data is not saving to the database. What's the solution?

ContactController.php

public function contact()
{
    if($request->isMethod('post'))
    {
        $data = $request->all();
    }
    $contact = new Contact;
    $contact->name = $data['contact_name'];
    $contact->email = $data['contact_email'];
    $contact->subject = $data['contact_subject'];
    $contact->body = $data['description'];
    $category->save();

    return redirect()->back()->with('flash_message_success', 
        'Your message has been sent successfully');
}

contact.blade.php

<form action="{{ url('/contact') }}" id="main-contact-form" class="contact-form row" name="contact-form" method="post">
     {{ csrf_field() }}
     <div class="form-group col-md-6">
         <input type="text" name="contact_name" class="form-control" required="required" placeholder="Name">
     </div>
     <div class="form-group col-md-6">
         <input type="email" name="contact_email" class="form-control" required="required" placeholder="Email">
     </div>
     <div class="form-group col-md-12">
         <input type="text" name="contact_subject" class="form-control" required="required" placeholder="Subject">
     </div>
     <div class="form-group col-md-12">
         <textarea name="description" id="message" required="required" class="form-control" rows="8" placeholder="Your Message Here"></textarea>
     </div>                        
     <div class="form-group col-md-12">
         <input type="submit" name="submit" class="btn btn-primary pull-right" value="Submit">
     </div>
</form>

Routes:

Route::get('contact', function(){
    return view('contact');
});

Route::post('contact', function(){
    return view('contact');
});

Solution

  • Use $contact->save(); not $category->save(); and also remove the if statement (for now): if($request->isMethod('post')) {

    Your route should be:

    Route::post('contact', 'ContactController@contact')->name('contact');