Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

doko1975's avatar

The POST method is not supported for this route. Supported methods: GET, HEAD.

I have problems with a route and get the message "The POST method is not supported for this route. Supported methods: GET, HEAD."

My Controller:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Cablelist;
use App\Cablename;
use App\Cabletyp;
use App\Ordernumber;
use App\Typeofmachine;
use Auth;
use Redirect;
use PDF;
use DB;


class CablelistsController extends Controller
{

  /**
   * Display a listing of the resource.
   *
   * @return \Illuminate\Http\Response
   */
  public function index()
  {
      //
      $data['cablelists'] = Cablelist::orderBy('idcablelists','desc')->paginate(10);
      $cablenames = Cablename::with('cablelist')->select('idcablenames', DB::raw
      ("CONCAT('IndNr: ',IndNr,', ', 'Kabel: ', cablenamescol,', ', numberofcores)
      AS full_cablename"))->get();

     return view('cablelist.list',$data)->with('cablenames', $cablenames);
  }

  /**
   * Show the form for creating a new resource.
   *
   * @return \Illuminate\Http\Response
   */
  public function create()
  {
  
  }

  function dynamic_field()

{
  $cablenames = Cablename::with('cablelist')->select('idcablenames', DB::raw
  ("CONCAT('IndNr: ',IndNr,', ', 'Kabel: ', cablenamescol,', ', numberofcores)
  AS full_cablename"))->get();

  return view('cablelist.dynamiccreate')->with('cablenames', $cablenames);
}
  /**
   * Store a newly created resource in storage.
   *
   * @param  \Illuminate\Http\Request  $request
   * @return \Illuminate\Http\Response
   */

   function insert(Request $request)
   {
     {
      if($request->ajax())
      {
       $rules = array(
         'cablelistscol*'=> 'required',
        'cablename_id.*'  => 'required',
        'lengh.*'  => 'required'
       );
       $error = Validator::make($request->all(), $rules);
       if($error->fails())
       {
        return response()->json([
         'error'  => $error->errors()->all()
        ]);
       }

       $cablelistscol= $request->cablelistscol;
       $cablename_id= $request->cablename_id;
       $lengh = $request->lengh;

       for($count = 0; $count < count($first_name); $count++)
       {
         $cablenames = Cablename::with('cablelist')->select('idcablenames', DB::raw
         ("CONCAT('IndNr: ',IndNr,', ', 'Kabel: ', cablenamescol,', ', numberofcores)
         AS full_cablename"))->get();
        $data = array(
         'cablelistscol'  => $cablelistscol[$count],
         'cablename_id'  => $cablename_id[$count],
         'lengh' => $lengh[$count],
        );
        $insert_data[] = $data;
       }

       DynamicField::insert($insert_data);
       return response()->json([
        'success'  => 'Data Added successfully.'
       ]);
      }
     }
   }
.
.
.
Here is some more not important code.
.
.
.
}

My View:

<html>
 <head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Laravel 5.8 - DataTables Server Side Processing using Ajax</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
 </head>
 <body>
  <div class="container">
     <br />
     <h3 align="center">Kabelliste 2.0</h3>
     <br />
     <div class="text-right">
       <a href="{{ url('/cablelists') }}" class="btn btn-success mb-2">Kabelliste</a>
       <a href="{{ url('/home') }}" class="btn btn-success mb-2">Home</a>
     </div>
     <h3 align="center">Testkabel</h3>
   <div class="table-responsive">
                <form method="post" id="cablelists_info">
                 <span id="result"></span>
                 <table class="table table-bordered table-striped" id="cablelists">
               <thead>
                 <tr>
                  <?php /* <th>idcablelists</th>*/?>
                   <th>cablelistscol</th>
                   <th>cablename_id</th>
                   <th>lengh</th>
                   <?php /*<th>typeofmachine_id</th>*/?>
                   <?php /*<th>Erstellt am:</th> */?>
                   <th>Action</th>
                 </tr>
               </thead>
               <tbody>

               </tbody>
               <tfoot>
                <tr>
                <td colspan="3" align="right">&nbsp;</td>
                <td>
                  @csrf
                  <input type="submit" name="save" id="save" class="btn btn-primary" value="Save" />
                 </td>
                </tr>
               </tfoot>
           </table>
          </form>
   </div>
  </div>
 </body>

</html>

<script>
$(document).ready(function(){

 var count = 1;

 dynamic_field(count);

 function dynamic_field(number)

 <?php /**/?>
 {
  html = '<tr>';
        html += '<td><input type="text" name="cablelistscol[]" class="form-control" /></td>';
  <?php /* cablename_id has to be one row */?>
        html += '<td><select class="form-control" id="cablename_id" name="cablename_id[]"><option value=""> -- Wähle einen Kabelnamen aus. --</option>@foreach($cablenames as $cablename)<option value="{{$cablename->idcablenames}}">{{$cablename->full_cablename}}</option>@endforeach<span class="text-danger">{{ $errors->first('cablename_id') }}</span></select></td>';
        html += '<td><input type="text" name="lengh[]" class="form-control lengh" /></td>';

        if(number > 1)
        {
            html += '<td><button type="button" name="remove" id="" class="btn btn-danger remove">Remove</button></td></tr>';
            $('tbody').append(html);
        }
        else
        {
            html += '<td><button type="button" name="add" id="add" class="btn btn-success">Add</button></td></tr>';
            $('tbody').html(html);
        }
 }

 $(document).on('click', '#add', function(){
  count++;
  dynamic_field(count);
 });

 $(document).on('click', '.remove', function(){
  count--;
  $(this).closest("tr").remove();
 });

 $('#dynamic_form').on('submit', function(event){
        event.preventDefault();
        $.ajax({
            url:'{{ route("cablelists.insert") }}',
            method:'post',
            data:$(this).serialize(),
            dataType:'json',
            beforeSend:function(){
                $('#save').attr('disabled','disabled');
            },
            success:function(data)
            {
                if(data.error)
                {
                    var error_html = '';
                    for(var count = 0; count < data.error.length; count++)
                    {
                        error_html += '<p>'+data.error[count]+'</p>';
                    }
                    $('#result').html('<div class="alert alert-danger">'+error_html+'</div>');
                }
                else
                {
                    dynamic_field(1);
                    $('#result').html('<div class="alert alert-success">'+data.success+'</div>');
                }
                $('#save').attr('disabled', false);
            }
        })
      });

    });
    </script>

I have problems with the Route::post('Kabelliste/insert', 'CablelistsController@insert')->name('cablelists.insert'); My Routes:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

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

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Auth::routes();
Route::resource('cabletyps', 'CabletypController');
Route::resource('cablenames', 'CablenamesController');
Route::resource('cablelists', 'CablelistsController');
Route::resource('typeofmachines', 'TypeofmachinesController');
Route::resource('ordernumbers', 'OrdernumbersController');
Route::get('Kabelliste', 'CablelistsController@dynamic_field')->name('cablelists.dynamic_field');
Route::post('Kabelliste/insert', 'CablelistsController@insert')->name('cablelists.insert');
C:\xampp\htdocs\KautexCabellist>php artisan rout:list
+--------+-----------+-------------------------------------+--------------------------+------------------------------------------------------------------------+--------------+
| Domain | Method    | URI                                 | Name                     | Action                                                                 | Middleware   |
+--------+-----------+-------------------------------------+--------------------------+------------------------------------------------------------------------+--------------+
|        | GET|HEAD  | /                                   |                          | Closure                                                                | web          |
|        | GET|HEAD  | api/user                            |                          | Closure                                                                | api,auth:api |
|        | POST      | cablelists                          | cablelists.store         | App\Http\Controllers\CablelistsController@store                        | web          |
|        | GET|HEAD  | cablelists                          | cablelists.index         | App\Http\Controllers\CablelistsController@index                        | web          |
|        | GET|HEAD  | cablelists/create                   | cablelists.create        | App\Http\Controllers\CablelistsController@create                       | web          |
|        | DELETE    | cablelists/{cablelist}              | cablelists.destroy       | App\Http\Controllers\CablelistsController@destroy                      | web          |
|        | PUT|PATCH | cablelists/{cablelist}              | cablelists.update        | App\Http\Controllers\CablelistsController@update                       | web          |
|        | GET|HEAD  | cablelists/{cablelist}              | cablelists.show          | App\Http\Controllers\CablelistsController@show                         | web          |
|        | GET|HEAD  | cablelists/{cablelist}/edit         | cablelists.edit          | App\Http\Controllers\CablelistsController@edit                         | web          |
|        | GET|HEAD  | cablenames                          | cablenames.index         | App\Http\Controllers\CablenamesController@index                        | web       
0 likes
5 replies
Sinnbeck's avatar

Move this route above the resource for cablelists. Your resource is catching it, it seems

Route::post('Kabelliste/insert', 'CablelistsController@insert')->name('cablelists.insert');
doko1975's avatar

Then i get the message "Route [cablelists.insert] not defined. (View: C:\xampp\htdocs\KautexCabellist\resources\views\cablelist\dynamiccreate.blade.php)", i have tried it on this ways before too.

doko1975's avatar

I have found some mistakes and corrected them, but now the save button does nothing and i get no error message.

My CablelistsController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Cablelist;
use App\Cablename;
use App\Cabletyp;
use App\Ordernumber;
use App\Typeofmachine;
use Auth;
use Redirect;
use PDF;
use DB;


class CablelistsController extends Controller
{

  /**
   * Display a listing of the resource.
   *
   * @return \Illuminate\Http\Response
   */
  public static function index()
  {
      //
      $data['cablelists'] = Cablelist::orderBy('idcablelists','desc')->paginate(10);
      $cablenames = Cablename::with('cablelist')->select('idcablenames', DB::raw
      ("CONCAT('IndNr: ',IndNr,', ', 'Kabel: ', cablenamescol,', ', numberofcores)
      AS full_cablename"))->get();

     return view('cablelist.list',$data)->with('cablenames', $cablenames);
  }

  /**
   * Show the form for creating a new resource.
   *
   * @return \Illuminate\Http\Response
   */
  public function create()
  {

  }

 function dynamic_field()

{
  $cablenames = Cablename::with('cablelist')->select('idcablenames', DB::raw
  ("CONCAT('IndNr: ',IndNr,', ', 'Kabel: ', cablenamescol,', ', numberofcores)
  AS full_cablename"))->get();

  return view('cablelist.dynamiccreate')->with('cablenames', $cablenames);
}
  /**
   * Store a newly created resource in storage.
   *
   * @param  \Illuminate\Http\Request  $request
   * @return \Illuminate\Http\Response
   */

    function insert(Request $request)
   {
     {
      if($request->ajax())
      {
       $rules = array(
         'cablelistscol*'=> 'required',
        'cablename_id.*'  => 'required',
        'lengh.*'  => 'required'
       );
       $error = Validator::make($request->all(), $rules);
       if($error->fails())
       {
        return response()->json([
         'error'  => $error->errors()->all()
        ]);
       }

       $cablelistscol= $request->cablelistscol;
       $cablename_id= $request->cablename_id;
       $lengh = $request->lengh;

       for($count = 0; $count < count($cablelistscol); $count++)
       {

        $data = array(
         'cablelistscol'  => $cablelistscol[$count],
         'cablename_id'  => $cablename_id[$count],
         'lengh' => $lengh[$count],
        );
        $insert_data[] = $data;
       }

       Cablelist::insert($insert_data);
       return response()->json([
        'success'  => 'Data Added successfully.'
       ]);
      }
     }

   }

My View:

<html>
 <head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Laravel 5.8 - DataTables Server Side Processing using Ajax</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
 </head>
 <body>
  <div class="container">
     <br />
     <h3 align="center">Kabelliste 2.0</h3>
     <br />
     <div class="text-right">
       <a href="{{ url('/cablelists') }}" class="btn btn-success mb-2">Kabelliste</a>
       <a href="{{ url('/home') }}" class="btn btn-success mb-2">Home</a>
     </div>
     <h3 align="center">Testkabel</h3>
   <div class="table-responsive">
                <form method="post" id="dynamic_form">
                 <span id="result"></span>
                 <table class="table table-bordered table-striped" id="idcablelists">
               <thead>
                 <tr>
                  <?php /* <th>idcablelists</th>*/?>
                   <th>cablelistscol</th>
                   <th>cablename_id</th>
                   <th>lengh</th>
                   <?php /*<th>typeofmachine_id</th>*/?>
                   <?php /*<th>Erstellt am:</th> */?>
                   <th>Action</th>
                 </tr>
               </thead>
               <tbody>

               </tbody>
               <tfoot>
                <tr>
                <td colspan="3" align="right">&nbsp;</td>
                <td>
                  @csrf
                  <input type="submit" name="save" id="save" class="btn btn-primary" value="Save" />
                 </td>
                </tr>
               </tfoot>
           </table>
          </form>
   </div>
  </div>
 </body>

</html>

<script>
$(document).ready(function(){

 var count = 1;

 dynamic_field(count);

 function dynamic_field(number)

 <?php /**/?>
 {
  html = '<tr>';
        html += '<td><input type="text" name="cablelistscol[]" class="form-control" /></td>';
  <?php /* cablename_id has to be one row */?>
        html += '<td><select class="form-control" id="cablename_id" name="cablename_id[]"><option value=""> -- Wähle einen Kabelnamen aus. --</option>@foreach($cablenames as $cablename)<option value="{{$cablename->idcablenames}}">{{$cablename->full_cablename}}</option>@endforeach<span class="text-danger">{{ $errors->first('cablename_id') }}</span></select></td>';
        html += '<td><input type="text" name="lengh[]" class="form-control lengh" /></td>';
      <?php /*  html += '<td><input type="text" name="typeofmachine_id[]" class="form-control" /></td>';*/?>
      <?php /*  html += '<td>@foreach($cablelists as $cablelist){{ date('Y-m-d', strtotime($cablelist->created_at)) }}@endforeach</td>'*/?>

        if(number > 1)
        {
            html += '<td><button type="button" name="remove" id="" class="btn btn-danger remove">Remove</button></td></tr>';
            $('tbody').append(html);
        }
        else
        {
            html += '<td><button type="button" name="add" id="add" class="btn btn-success">Add</button></td></tr>';
            $('tbody').html(html);
        }
 }

 $(document).on('click', '#add', function(){
  count++;
  dynamic_field(count);
 });

 $(document).on('click', '.remove', function(){
  count--;
  $(this).closest("tr").remove();
 });

 $('#dynamic_form').on('submit', function(event){
        event.preventDefault();
        $.ajax({
            url:'{{ route("cablelists.insert") }}',
            method:'post',
            data:$(this).serialize(),
            dataType:'json',
            beforeSend:function(){
                $('#save').attr('disabled','disabled');
            },
            success:function(data)
            {
                if(data.error)
                {
                    var error_html = '';
                    for(var count = 0; count < data.error.length; count++)
                    {
                        error_html += '<p>'+data.error[count]+'</p>';
                    }
                    $('#result').html('<div class="alert alert-danger">'+error_html+'</div>');
                }
                else
                {
                    dynamic_field(1);
                    $('#result').html('<div class="alert alert-success">'+data.success+'</div>');
                }
                $('#save').attr('disabled', false);
            }
        })
      });

    });
    </script>

My routes:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

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

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::resource('cabletyps', 'CabletypController');
Route::resource('cablenames', 'CablenamesController');
Route::resource('cablelists', 'CablelistsController');
Route::resource('typeofmachines', 'TypeofmachinesController');
Route::resource('ordernumbers', 'OrdernumbersController');
Route::get('Kabelliste', 'CablelistsController@dynamic_field')->name('cablelists.dynamic_field');
Route::post('Kabelliste/insert', 'CablelistsController@insert')->name('cablelists.insert');
Snapey's avatar
Snapey
Best Answer
Level 122

save button does nothing

open the browser development tools and switch to network tab.

Hit the save button. Is a request sent to the server? Is the URL what you expected? Does the request contain the form data? You should be proficient in using this tool if you want to develop for the web.

doko1975's avatar

I knew this tool, but never used it in the past, because i never developed for the web. Thank you very much, you helped me to solve the problems on my own! Everything is running fine at this point ;).

Please or to participate in this conversation.