Laravel - usar delete sin formulario

 
Vista:
Imágen de perfil de Charly
Val: 26
Ha aumentado 1 puesto en Laravel (en relación al último mes)
Gráfica de Laravel

usar delete sin formulario

Publicado por Charly (13 intervenciones) el 05/02/2018 18:21:48
Tengo que eliminar un objeto de una base de datos con una página con un botón Borrar.
He escrito lo siguiente, pero no me funciona.
En web.php:
1
2
3
4
Route::get('/',function(){
	return view('borraralumno');
});
Route::delete('/borraralumno/{$id}','BorrarAlumnosController@destroy');
En borraralumno.blade.php:
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<title>Borrar Alumno</title>
</head>
<body>
<form name='borrar_alumno' action='borraralumno' method='delete'>
	{{ csrf_field() }}
	{{ method_field('DELETE') }}
	<button type="submit" value="submit">Borrar</button>
</form>
</body>
</html>
En BorrarAlumnosController.php:
1
2
3
4
5
public function destroy($id){
	$alumno=Alumno::find($id);
	$alumno->destroy();
	retunr view('borraralumno');
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox
Val: 70
Plata
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

usar delete sin formulario

Publicado por abzerox (23 intervenciones) el 05/02/2018 23:58:19
Hola, en lugar de usar el método delete, utiliza el método post así:

1
2
3
4
5
6
# borraralumno.blade.php
<form method="POST">
....
....
....
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly
Val: 26
Ha aumentado 1 puesto en Laravel (en relación al último mes)
Gráfica de Laravel

usar delete sin formulario

Publicado por Charly (13 intervenciones) el 06/02/2018 09:35:43
Aun haciendo ese cambio sigue sin funcionar.
¿Necesitaría pasar en el formulario el id del objeto a borrar?
¿O tengo mal hecho el método destroy o las llamadas de web.php?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 70
Plata
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

usar delete sin formulario

Publicado por abzerox (23 intervenciones) el 06/02/2018 09:44:21
Prueba con esta ruta:
1
Route::delete('/borraralumno','BorrarAlumnosController@destroy');

y en el controller capturas el $id de esta forma:
1
2
3
4
5
6
7
8
9
public function destroy(Request $request){
        $id = $request->input('id');
	$alumno=Alumno::find($id);
 
	$alumno->destroy();
 
	retunr view('borraralumno');
 
}

Tambien te esta fatando poner el input para el id en el formulario:

1
2
3
4
5
6
<form name='borrar_alumno' action='borraralumno' method='POST'>
	{{ csrf_field() }}
	{{ method_field('DELETE') }}
        <input type="hidden" name="id" value="<?php echo "AQUI PONER EL ID";  ?>">
       <button type="submit" value="submit">Borrar</button>
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Charly
Val: 26
Ha aumentado 1 puesto en Laravel (en relación al último mes)
Gráfica de Laravel

usar delete sin formulario

Publicado por Charly (13 intervenciones) el 06/02/2018 10:08:59
Arreglado!
Además de los fallos que me comentabas había alguno más:
en el controlador necesitaba arreglar así esta línea:
1
$alumno=\App\Alumno::find($id);
y tenía que poner $id como parámetro en el destroy.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar