2017-10-02 4 views
0

지금 Laravel 5.4 및 Yajra Datatables 플러그인을 사용 중입니다. 다 잘 작동하지만 삭제가 작동하지 않습니다. 내 URL은 다음과 같이 간다 ... http://localhost:8000/admin/view/%7B%7B%20route ('admin.faculty.destroy', % 20 $ faculties- % 3Eid) % 20 % 7D % 여기Laravel의 Yajra Datatables에 삭제 버튼 추가 5.4

7D 내 컨트롤러 : 여기

public function getFacultiesData() 
{ 
    $faculties = faculty::select(['id','name','designation','email','mobile', 'updated_at']); 
    return Datatables::of($faculties) 
    ->addColumn('action', function ($faculties) { 
      return '<a href="/admin/faculty/'.$faculties->id.'/edit" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> Edit</a> 
       <form class="form-group" action="{{ route(\'admin.faculty.destroy\', $faculties->id) }}" method="POST"> 
        <input type="hidden" name="_method" value="DELETE"> 
        <button class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-trash"></i>Delete</button> 
       </form> ';}) 
     ->editColumn('updated_at', function ($faculties) { 
      return $faculties->updated_at->diffForHumans(); 
     }) 
     ->filterColumn('updated_at', function ($query, $keyword) { 
      $query->whereRaw("DATE_FORMAT(updated_at,'%Y/%m/%d') like ?", ["%$keyword%"]); 
     }) 
     ->make(true); 
} 

나는 그것을 해결 한

답변

0

내 JS

$(function() { 
$('#faculties-table').DataTable({ 
    processing: false, 
    serverSide: true, 
    ajax:'http://localhost:8000/admin/get/faculties/data', 
    columns: [ 
    {data: 'name'}, 
    {data: 'designation'}, 
    {data: 'email'}, 
    {data: 'mobile'}, 
    {data: 'updated_at'}, 
    {data: 'action', name: 'action', orderable: false, searchable: false} 
    ]}); 
}); 

편집은 완벽하게 작동하고있다. 컨트롤러에서 그냥 양식 대신 <button class="btn btn-xs btn-danger btn-delete" data-remote="/admin/faculty/' . $faculties->id . '"><i class="glyphicon glyphicon-trash"></i>Delete</button>을 사용합니다. 보기 페이지에서 ajax 호출을 사용하십시오.

$('#faculties-table').on('click', '.btn-delete[data-remote]', function (e) { 
    e.preventDefault(); 
    $.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     } 
    }); 
    var url = $(this).data('remote'); 
    // confirm then 
    if (confirm('Are you sure you want to delete this?')) { 
     $.ajax({ 
      url: url, 
      type: 'DELETE', 
      dataType: 'json', 
      data: {method: '_DELETE', submit: true} 
     }).always(function (data) { 
      $('#faculties-table').DataTable().draw(false); 
     }); 
    }else 
     alert("You have cancelled!"); 
}); 
1

시도해 볼 수 있습니다. 양식을 제거하고이 코드로 바꿉니다.

<a href="'. route('admin.faculty.destroy', $faculties->id) .'" class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-trash"></i> Delete</a> 

귀하의 API 컨트롤러는 다음과 같아야합니다.

public function getFacultiesData() 
    { 
     $faculties = faculty::select(['id','name','designation','email','mobile', 'updated_at']); 
     return Datatables::of($faculties) 
     ->addColumn('action', function ($faculties) { 
       return '<a href="/admin/faculty/'.$faculties->id.'/edit" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> Edit</a> 
        <a href="'. route('admin.faculty.destroy', $faculties->id) .'" class="btn btn-xs btn-danger"><i class="glyphicon glyphicon-trash"></i> Delete</a> '; 
     }) 
     ->editColumn('updated_at', function ($faculties) { 
      return $faculties->updated_at->diffForHumans(); 
     }) 
     ->filterColumn('updated_at', function ($query, $keyword) { 
      $query->whereRaw("DATE_FORMAT(updated_at,'%Y/%m/%d') like ?", ["%$keyword%"]); 
     }) 
     ->make(true); 
    } 
관련 문제