2016-04-15 11 views
3

Ich habe ein Formular mit einer Schaltfläche zum Löschen, die ich auf der Konsole sehe, dass es eine Löschanforderung sendet.Laravel löschen Eintrag mit Destroy-Methode

jquery.js:4 DELETE http://laravel.com/painel/player/53 500 (Internal Server Error) 

und mein Weg ist:

Route::resource('painel/player','PlayerController'); 


| DELETE | painel/player/{player}  | painel.player.destroy | App\Http\Controllers\[email protected] | 

und meine Methode zerstören, ist wie folgt:

public function destroy($id) 
    { 
      $player = Player::where('id_player', '=', $id)->first(); 
      $player->delete(); 
      $player = array(
        'users'   => Player::all(), 
        'refresh'  => true 
      ); 
      return View::make('painel.player.show', $player); 
    } 

EDIT: vergaß ich die Ajax zu erwähnen:

$(document).on('click', '.solsoConfirm', function(){ 
     $("#solsoDeletForm").prop('action', $(this).attr('data-href')); 
    }); 

    $(document).on('click', '.solsoDelete', function(e){ 
     e.preventDefault(); 

     var solsoSelector = $(this); 
     var solsoFormAction = $('#solsoDeletForm').attr('action'); 

     $.ajax({ 
      url: solsoFormAction, 
      type: 'delete', 
      cache: false, 
      dataType: 'html', 
      success:function(data) { 
       $('#solsoDeleteModal').modal('hide'); 
       $('#ajaxTable').html(data); 
       $('#countClients').text($('.solsoTable').attr('data-all')); 
       $.growl.notice({ title: solsoSelector.attr('data-message-title'), message: solsoSelector.attr('data-message-success') }); 
       $('.solsoTable').dataTable(); 
      } 
     }); 

     return false; 
    });  
+0

Wie Sie die Routen für definiert haben der Controller, ist es ein Ressourcencontroller oder ein impliziter Controller? Können Sie auch Ihren 'routes.php' Code hinzufügen? –

+0

Es ist ein Ressourcen-Controller. Macht das einen Unterschied? – ledesma

+1

Wenn Sie es als impliziten Controller hatten, würde es. Wie auch immer, können Sie Ihren Controller und 'routes.php' vollständigen Code auf die Frage stellen? –

Antwort

0

Während Ihre $.ajax({ ... type: 'delete' ... }) sollte funktionieren, müssen Sie set up your response to accept the 'delete' method.

Die Alternative und Standardmethode tun PUT, PATCH und DELETE in Laravel ist über method spoofing:

<form action="painel/player/{{ $id }}" method="POST"> 
    {{ method_field('DELETE') }} 
    {{ csrf_field() }} 
</form> 

Ihre JS etwas aussehen könnte:

var csrf = $('input[name="_token"]').val(); 

$.ajax({ 
    url: solsoFormAction, 
    type: 'post', 
    data: {_method: 'delete', _token: csrf}, 
    ... 
}); 
+0

BTW der tatsächliche Inhalt des 500-Fehler wird Ihnen wahrscheinlich sagen, wo das Problem ist - Sie sollten in der Lage sein, es in den Entwicklertools Ihres Browsers zu sehen. –

+0

Es funktioniert nicht ... das Dev-Tool sagt nur "500 (Interner Serverfehler)". Es heißt, der Fehler ist auf der Ajax-Methode .. Wenn ich die Anfrage ohne eine Ajax-Anfrage senden .. es funktioniert. – ledesma

+0

Wechseln Sie in Entwicklungstools zur Registerkarte Netzwerk und klicken Sie auf POST. Sie sollten "Header" und "Response" und einige andere Dinge sehen. Klicken Sie auf Antwort - Sie sollten die vollständige Antwort von Laravel sehen, die das Problem beschreibt. Wenn Sie es nicht finden können, überprüfen Sie die Laravel-Logdatei. Haben Sie Ihren AJAX-Code aktualisiert, um sowohl _method als auch _token zu senden? –

Verwandte Themen