[QUOTE=berkeleyPunk;4837065]Hola a todos
CONTEXTO. Estoy trabajando en Laravel 8 y uso el plugin DataTables para mostrar en pantalla los registros de una base de datos. Como verán en el código, creo todas las rutas para hacer CRUD usando:
Código PHP:
Route::resource('animal', 'AnimalController');
. Esto genera una ruta para el método DELETE así: animal/{id}
PROBLEMA. Cuando presiono el botón borrar de un registro en específico, el registro sí se borra, bien, pero la consola del navegador devuelve este error: "The DELETE method is not supported for this route. Supported methods: GET, HEAD, POST", y por tanto Javascript se rompe y nunca salta el alert de que el registro fue borrado. Y si cambio el tipo de petición a POST, ¡el error me dice que no es soportado POST y sí DELETE!
PREGUNTA: ¿qué estoy haciendo mal?
RUTA Código PHP:
Route::resource('animal', 'AnimalController');
CONTROLADOR Código PHP:
public function destroy($id)
{
$animal = DB::select('CALL sp_destroy_animal(?)', [$id]);
return back();
}
VISTA Código PHP:
jQuery('#BTNeliminar').click(function(e){
e.preventDefault();
var url = '{{ route("animal.destroy", ":xxx") }}';
url = url.replace(':xxx', animalID);
jQuery.ajax({
"url": url,
"type": 'DELETE',
"data": {
"_token": "{{ csrf_token() }}"
},
beforeSend: function() {
jQuery('#BTNeliminar').text('Eliminando...');
},
success: function(data) {
setTimeout(function() {
// Desaparecemos el modal
jQuery('#modalEliminar').modal('hide');
// Que salte el toast como en Android
toastr.warning('El registro '+animalID+' fue eliminado correctamente.', 'Eliminar registro', {timeOut:3000});
jQuery('#tablaAnimal').DataTable().ajax.reload();
}, 100);
}
});
});
Ahora bien, todo funciona perfecto si creo una ruta en específico para borrar registros, por ejemplo
Código PHP:
Route::get('animal/eliminar/{id}', [AnimalController::class, 'destroy'])->name('animal.destroy');
, y esto arreglaría el problema. Pero no quiero crear una ruta extra. Yo quiero usar las rutas generadas al hacer uso de resource:
Código PHP:
Route::resource('animal', 'AnimalController');
¡Cualquier ayuda es bienvenida!