En mi web.php
Route::get('/show', 'StudentsController@show'); Route::POST('/student_delete/{id}', 'StudentsController@delete');En mi controlador StudentsController.php:
public function show() { $students = DB::table('students') ->select('*') ->get(); return view('students',['students'=>$students]); } public function delete($id) { DB::table('students')->where('id', '=', $id)->delete(); return back(); }En mi opinión, estudiantes.blade.php:
<table> <tr> <th> name</th> <th> tel</th> <th> # </th> </tr> @for($m=0; $m< 10;$m++) <tr> <td><input type="text" value="{{$students[$m]->name}}"/></td> <td><input type="text" value="{{$students[$m]->tel}}"/></td> <form action="/student_delete/{{$students[$m]->id}}" id="{{$students[$m]->id}}"method="POST"> {{ csrf_field() }} <td><button type="submit" class="btn btn-danger remove-tr">-</button></td> </form> </tr> @endfor </table>El problema está aquí en mi secuencia de comandos para disparar una dulce alerta después de eliminar a un estudiante. ¿Cómo obtengo la identificación del formulario del estudiante que quiero eliminar? este es mi guión:
<script> $("#How_to_get_the_id_of_form_here").submit(function(e) { e.preventDefault(); var form = this; Swal.fire({ title: 'do you want to continue?', icon: 'question', iconHtml: '؟', confirmButtonText: 'yes', cancelButtonText: 'no', showCancelButton: true, showCloseButton: true }).then((result) => { if (result.isConfirmed) { form.submit(); } else if(!result.isDenied) { console.log(result.isDenied); } }); }); </script>¿Por qué usar la identificación específicamente cuando puede usar una clase compartida por todas las formas?
@for($m=0; $m< 10;$m++) ... <form class="student-form-delete" action="/student_delete/{{$students[$m]->id}}" id="{{$students[$m]->id}}"method="POST"> ... </form> ... @endfory usa ese nombre de clase en tu javascript
<script> $(".student-form-delete").submit(function(e) { e.preventDefault(); var form = this; Swal.fire({ ... }); </script>Resolvería este problema de esta manera: envuelva el script en la función (id - sería como parámetro de función)
function deleteStudent (id) { e.preventDefault(); var form = $("#" + id); Swal.fire({ title: 'do you want to continue?', icon: 'question', iconHtml: '؟', confirmButtonText: 'yes', cancelButtonText: 'no', showCancelButton: true, showCloseButton: true }).then((result) => { if (result.isConfirmed) { form.submit(); } else if(!result.isDenied) { console.log(result.isDenied); } }); }; Luego configure esta función como onclick="deleteStudent ({{$students[$m]->id}});"
Aquí:
<form action="/student_delete/{{$students[$m]->id}}" id="{{$students[$m]->id}}"method="POST"> {{ csrf_field() }} <td><button type="submit" class="btn btn-danger remove-tr" onclick="deleteStudent({{$students[$m]->id}});return false;">-</button></td> </form>O, si la confirmación no funciona, la única forma: coloque el script en el bucle:
<table> <tr> <th> name</th> <th> tel</th> <th> # </th> </tr> @for($m=0; $m< 10;$m++) <tr> <td><input type="text" value="{{$students[$m]->name}}"/></td> <td><input type="text" value="{{$students[$m]->tel}}"/></td> <form action="/student_delete/{{$students[$m]->id}}" id="{{$students[$m]->id}}"method="POST"> {{ csrf_field() }} <td> <button type="submit" class="btn btn-danger remove-tr">-</button> </td> </form> <script> $("#{{$students[$m]->id}}").submit(function(e) { e.preventDefault(); var form = this; Swal.fire({ title: 'do you want to continue?', icon: 'question', iconHtml: '؟', confirmButtonText: 'yes', cancelButtonText: 'no', showCancelButton: true, showCloseButton: true }).then((result) => { if (result.isConfirmed) { form.submit(); } else if(!result.isDenied) { console.log(result.isDenied); } }); }); </script> </tr> @endfor </table>