Estoy atascado con mi proyecto, por favor ayuda...
Esta es la situación: En mi proyecto tengo que asignar un profesor para dar permiso para calificar a los estudiantes, porque un grupo puede tener 2 o más profesores, pero solo uno tiene que tener permiso para calificar, entonces... Agregué una columna en mi tabla 'maestros' en la base de datos con el nombre 'grado' de tipo booleano. Y en mi opinión agregué un checkbox... ¿Cómo cambio el valor de un checkbox sin usar ningún formulario o botón para activar la acción y activar el checkbox en el profesor que va a tener permiso para calificar? Y este valor también debe actualizarse en la base de datos.
<!--teachers--> <table class=" table table-sm table-striped table-bordered "> <thead class="text-white bg-primary"> <tr> <th>@lang('show.Identifier')</th> <th>@lang('show.email')</th> <th>@lang('show.grade')</th> <th>@lang('show.delete')</th> </tr> </thead> <tbody class="small text-center"> @foreach ($group->teachers as $teacher) <tr> <td >{{$teacher->Identifier}} </td> <td >{{$teacher->email}} </td> <td> <input id="active" {{$teacher->grade == 1 ?'checked':''}} type="checkbox" name="grade" value="1"> </td> <td> <form method="post" action="{{url('Groups/Disenroll/'.$group->idGroup.'?idTeacher='.$teacher->idTeacher)}}"> {{csrf_field()}} <button type="submit" class="btn btn-sm btn-outline-danger" > <i class="material-icons small" >call_split</i></button> </form> </td> </tr> @endforeach </tbody> </table>Y esta es una imagen de la mesa, si te sirve...
Creo que puedes usar algo como JQuery para esto.
En primer lugar, puede agregar una clase de clase de alternancia a su casilla de verificación
<input class="active toggle-class" {{$teacher->grade == 1 ?'checked':''}} type="checkbox" name="grade">Y en segundo lugar, asegúrese de tener una forma de realizar un seguimiento de quién está haciendo las calificaciones.
Agregue data-id="{{ $teacher->Identifier}}" en su casilla de verificación
<input data-id="{{ $teacher->Identifier}}" class="active toggle-class" {{$teacher->grade == 1 ?'checked':''}} type="checkbox" name="grade">En tu web.php agrega una nueva ruta
Route::get('/path/to/updateGrader/status', [App\Http\Controllers\MyController::class, 'updateGraderStatus']);Agregue el siguiente código donde se encuentra su casilla de verificación
$('.toggle-class').on('change',function(){ let status = $(this).prop('checked') == true ? true : false; let grader_id = $(this).data('id'); $.ajax({ type:'GET', dataType:'json', url:'/path/to/updateGrader/status', // add your earlier created route here data:{'grade': status, 'grader_id': grader_id}, success: function(data){ console.log('success'); } }); });En su controlador, MyController en nuestro caso crea una nueva función
public function updateGraderStatus(Request $request) { $grader = MyModel::find($request->grader_id); $grader->grade = $request->grade; $grader->save(); }Por favor, hágamelo saber si esto le ayuda. No lo probé, pero creo que así es como lo harías.