Метод DELETE & PUT не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD, POST - PullRequest
0 голосов
/ 12 апреля 2020

Мне нужна ваша помощь, ребята, мое приложение не может удалить и не может обновить. он продолжает выскакивать эти ошибки на моих кнопках редактирования и удаления;

(1/1) MethodNotAllowedHttpException
The DELETE method is not supported for this route. Supported methods: GET, HEAD.



(1/1) MethodNotAllowedHttpException
The PUT method is not supported for this route. Supported methods: GET, HEAD.

это мой маршрут

Route::group(['middleware' => ['role:Admin']], function () {
    Route::resource('/device', 'DeviceController');
});

это мой клинок редактирования

<form action="/device" method="POST" id="editForm">
  {{csrf_field()}}
  {{ method_field('PUT') }}

   <div class="col-md-4 mb-3">
   <label>Serial Number</label>
     <input type="text" name="Serial_No" id="" class="form-control"  placeholder="Enter Serial number">
   </div>

  <button class="btn btn-primary" type="submit">Add Data</button>
  <button type="reset" class="btn btn-default float-right">Cancel</button>
   <button type="reset" class="btn btn-default float-middle">Clear</button>
</form>

Это мой блейд для удаления

     <form action="/device" method="POST" id="deleteForm">
            {{csrf_field()}}
            {{method_field('DELETE')}}

             <div class="form-row">
             <input type="hidden" name="_method" value="DELETE" >
             <P>Are You Sure!.. You want to delete this Device?</P>
             </div>

       <button class="btn btn-primary " type="submit" >YES! DELETE DEVICE</button>
       <button type="button" class="btn btn-secondary float-right" data-dismiss="modal" >CANCEL</button>

      </form>

Это мой контроллер для удаления

public function destroy($id)
    {
        $devices = Device::find($id);
        $devices -> delete();
        return Redirect::back() -> with('success','Data Deleted Successfully');
    }

Это мой скрипт, который удаляет

<script>
//Start Delete Record

        table.on('click', '.delete', function () {

        $tr = $(this).closest('tr');
        if ($($tr).hasClass('child')) {
          $tr = $tr.prev('.parent');
        }

        var data = table.row($tr).data();
        console.log(data);

        $('#deleteForm').attr('action', '/laptops/'+data[0]);
        $('#deleteModal').modal('show');
        });
        //End Delete Record

      });
</script>

1 Ответ

0 голосов
/ 12 апреля 2020

Вы не передаете правильные действия

ваша форма обновления должна выглядеть следующим образом

<form action="" method="POST" id="editForm">
  {{csrf_field()}}
  {{ method_field('PUT') }}

   <div class="col-md-4 mb-3">
   <label>Serial Number</label>
     <input type="text" name="Serial_No" id="" class="form-control"  placeholder="Enter Serial number">
   </div>

  <button class="btn btn-primary" type="submit">Add Data</button>
  <button type="reset" class="btn btn-default float-right">Cancel</button>
   <button type="reset" class="btn btn-default float-middle">Clear</button>
</form>

ваша форма удаления должна выглядеть следующим образом.

<form action="" method="POST" id="deleteForm">
  {{csrf_field()}}
  {{method_field('DELETE')}}

  <div class="form-row">
    <p>Are You Sure!.. You want to delete this Device?</p>
  </div>

  <button class="btn btn-primary " type="submit">YES! DELETE DEVICE</button>
  <button type="button" class="btn btn-secondary float-right" data-dismiss="modal">
    CANCEL
  </button>
</form>

ваш сценарий должен выглядеть следующим образом (замените 'laptops /' на 'device /')

table.on('click', '.delete', function () {
    $tr = $(this).closest('tr');
    if ($($tr).hasClass('child')) {
          $tr = $tr.prev('.parent');
        }

        var data = table.row($tr).data();
        console.log(data);

        $('#deleteForm').attr('action', '/device/'+data[0]);
        $('#deleteModal').modal('show');
        });

Кроме того, в качестве мнения вы можете использовать множественный маршрут вашего ресурса вместо единственного подхода. т.е. /devices вместо /device, поэтому в вашей сети. php файл маршрутов у вас есть:

Route::group(['middleware' => ['role:Admin']], function () {
    Route::resource('/devices', 'DeviceController');
});

Таким образом, у вас есть более удобный список маршрутов, например:

GET - /devices
GET - /devices/create
POST - /devices/update
GET - /devices/{device}
GET - /devices/{device}/edit
PUT/PATCH - /devices/{device}
DELETE - /devices/{device}

Все это можно посмотреть в вашем клике, используя php artisan route:list

...