2017-08-06 16 views
0

laravelのdatatablesプラグインに問題があります。データテーブルリストから要素を削除しようとしたときに、showメソッドが呼び出されて削除できなくなりました。誰かが私のことをなぜそのように振る舞い、どうやって解決するのか説明できますか?ここに私のコードです。laravelデータテーブルのdestroyメソッドの代わりにshowメソッドが呼び出されました

コントローラー:

public function destroy($project) { 
    $project = Project::find($project); 

    $project->delete(); 

    session()->flash('message', 'projet supprimé'); 

    return redirect()->back(); 
} 

public function ajaxListing() { 
    $projects = Project::select(['id', 'title']); 
    return Datatables::of($projects) 
     ->addColumn('action', function ($project) { 
      return '<a class="data-action" href="'.route('projects.edit', $project->id).'"> 
         <i class="fa fa-pencil-square-o fa-2x" aria-hidden="true"></i></a> 
         <a class="data-action" href="'.route('projects.destroy', $project->id).'"> 
         <i class="fa fa-times fa-2x" aria-hidden="true"></i></a>'; 
     }) 
     ->make(true); 
} 

ビュー:

<table class="table table-bordered table-striped dataTable" id="listingProjects"> 
    <thead> 
    <th>ID</th> 
    <th>Titre</th> 
    <th>Actions</th> 
    </thead> 


</table> 

@push('scripts') 
<script> 
    $(document).ready(function() { 
     $('#listingProjects').DataTable({ 
      processing: true, 
      serverSide: true, 
      ordering: true, 
      language: { 
       processing: "Traitement en cours...", 
       search: 'Recherche : ', 
       lengthMenu: "Afficher _MENU_ &eacute;l&eacute;ments", 
       info: "Affichage de l'&eacute;lement _START_ &agrave; _END_ sur _TOTAL_ &eacute;l&eacute;ments", 
       paginate : { 
        first : '<i class="fa fa-fast-backward" aria-hidden="true"></i>', 
        previous : '<i class="fa fa-chevron-circle-left" aria-hidden="true"></i>', 
        next : '<i class="fa fa-chevron-circle-right" aria-hidden="true"></i>', 
        last: '<i class="fa fa-fast-forward" aria-hidden="true"></i>', 
       } 
      }, 
      ajax: '{!! route('datatables.projectData') !!}', 
      columns: [ 
       {data: 'id', name: 'id'}, 
       {data: 'title', name: 'title'}, 
       {data: 'action', name: 'action', orderable: false, searchable: false} 
      ] 
     }); 
    }); 

</script> 
@endpush 

ルート:

Route::any('project-data', 'Admin\[email protected]')->name('datatables.projectData'); 

Route::resource('projects', 'Admin\ProjectsController'); 

答えて

1

私はようやく答えを見つけたが、問題がルートにあった、我々は除いて追加する必要がありますリソースルートに移動して、独自の削除ルートを作成します。

Route::get('projects/{project}/delete', 'Admin\[email protected]')->name('projects.destroy'); 
Route::resource('projects', 'Admin\ProjectsController', ['except' => 'destroy']); 

このようにして、ビュー内のリンク上のルートを呼び出すだけで済みます。

関連する問題