A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de PHP con Laravel

Curso de PHP con Laravel

H茅ctor Benitez

H茅ctor Benitez

Borrando reportes

17/25
Recursos

De la misma forma en la que pudimos crear un 鈥淔ake PUT/PATCH鈥 tambi茅n podemos crear una especie de 鈥淔ake DELETE鈥.

  • Con Javascript podemos mostrar una alerta al borrar una entrada que nos permita confirmar si la vamos a borrar o no.
  • Es bueno que las vistas hagan match con la acci贸n porque permite encontrar r谩pidamente qu茅 vista le pertenece a qu茅 acci贸n.
  • Laravel nos ofrece el helper @method(鈥榙elete鈥) ya que no se puede especificar directamente en el form.
  • Tenemos con Laravel un m茅todo especial findOrFail que permitir谩 regresar un error 404 si un usuario est谩 haciendo algo no v谩lido al consultar o editar un registro en la base de datos.

Aportes 24

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

le recomiendo que vean el siguiente link, muestra como borrar registros con un flag para no eliminarlo totalmente de la base de datos

https://laraveles.com/como-borrar-y-restaurar-registros-usando-soft-delete-en-laravel/

La funci贸n findOrFail es 煤til para que cuando queremos validar que cierto recurso exista, si no lo encuentra entonces devuelve un error 404 (Not found)

No es com煤n hacer una nueva ruta solo para confirmar el eliminado de un recurso, por lo que podemos aplicar lo que aprendimos en e curso anterior, podemos agregarle este atributo al bot贸n de delete:

onclick="return confirm('驴Realmente desea eliminar este recurso')"

As铆 hacemos una validaci贸n mucho m谩s r谩pida.

Como 煤ltimo me gustar铆a comentar que, como pr谩ctica y para aprender esta bien usar las funciones de delete para eliminar recursos de la base de datos, sin embargo, es mucho mejor manejar 鈥渇lags鈥 para indicar si un registro est谩 activo o no, ya que mantener datos en nuestra base de datos puede ser 煤til a futuro, esto se explica m谩s a detalle en el curso del ORM Eloquent 馃槃!

Aunque se indico no usar javascript agrego este m茅todo que es parecido a otro framework para hacerlo desde la misma columna

<form action="/expense_reports/{{ $expenseReport->id }}" method="post">
	@csrf
	@method('delete')
	 <input class="btn btn-danger" type="submit" name="submit" value="Delete" 
	onclick="return confirm('Do you really want to submit the form?');"/>
</form>

Si les causa error el llamar la ruta confirm delet prueben esta linea de codigo.

<Route::get('/expense_reports/{id}/confirmDelete',[ExpenseReportController::class, 'confirmDelete']);>

Me ha gustado mucho este Curso, Excelente Aportes, Gracias de antemano.

Mis errores 404 no son nada chidos 馃槮

Apuntes:
Para el proceso de eliminacion se aplica algo parecido en la vista del index del controlador

Diferente a este proceso, se crea una nueva sentencia de ruta, la cual se hara de manera siguiente:

- Route::get(鈥/vista_principal/{id}/confirmDelete鈥,
[email protected]鈥);

Consecuentemente se crea un metodo 鈥渃onfirmDelete鈥 en el controller designado, que va a contener lo siguiente:

- $report = ExpenseReport::find($id);
return view(鈥榥ombreCarpeta.confirmDelete鈥, [
鈥榬eport鈥 => $report
]);

Finalmente, para la parte del metodo destroy(), se escribe algo similar a lo del update:

- $report = ExpenseReport::find($id);

- $report->delete();

return redirect(鈥榚xpense_reports鈥);

Para el caso de los edit, podemos usar en lugar de 鈥榝ind($id)鈥, 鈥榝indOrFail($id)鈥 para validar que exista el usuario.

Como se hace este mismo proceso pero con JavaScript

A que te refieres con 鈥榬eport鈥 relacionado con $report en la funci贸n confirmDelete?

Woooow, awesome thak you Benites.

Hola, no entiendo el funcionamiento del 鈥榬eport鈥 que se usa por ejemplo en el minuto 5:48. De donde sale?. Gracias XD

驴C贸mo podr铆a hacer para borrarlo con JS?

Lo estoy haciendo as铆, pero me sale 405 Error - Method Not Allowed

$(document).on('click', '.delete', function (e) {
  e.preventDefault();
  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });
  var id = $(this).data('id');
  Swal.fire({
      title: "驴Est谩s seguro?",
      type: "warning",
      confirmButtonColor: '#d33',
      cancelButtonColor: '#28a745',
      confirmButtonText: "S铆",
      showCancelButton: true,
      cancelButtonText: "No"
  }).then(function() {
          $.ajax({
            type: "delete",
            url: "/postulantes/" + id,
            data: {'id': id},
            success: function (data) {}
          });
    });
});

En esta carpeta: /vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views, se encuentran todos los archivos personalizados de error, y se pueden ajustar para darles un bonito estilo de presentaci贸n, en lugar del fondo gris y la letra plana que se maneja por defecto en Laravel鈥

realmente interesante la demostracion del borrado y la confirmacion con solo Laravel.

Lo logico es usa JS pero es bueno ver que se puede sencillamente hacer a 鈥渕ano鈥 con Laravel

Muy bien explicado como borrar registros. Se adicion贸 una p谩gina para confirmar si realmente se desea borrar. Es opcional, pero sirve para aprender un poco mas. Gracias.

Notas:

  • Ceamos un fake delete para enviar los datos a traves de una vista, en la que le asignamos el metodo delete que es el que se va a encargar de eliminar los registros a trav茅s de la funcion destroy del controlador usando el metodo de laravel delete, ya que destroy se usa cuando se envian muchos $id鈥檚.

  • Para ello creamos una nueva ruta en el archivo web php de tipo get para que pueda obtener los datos.

Excelente forma de borrar los datos

Super 馃槂

Creo que no es necesaria la ruta creada

Buenos d铆as, excelente curso, realmente estoy muy contento.

Tengo una duda, por que se empe帽an en crear un m茅todo confirmDelete si pueden usar el que trae el controller destroy?.

Alguien podr铆a por favor explicarme como funciona el hecho de que si tengo el m茅todo confirmDelete, se aplica el Destroy?.. es por el fake delete?.

Gracias.

Cuando presiono le boton 鈥渄elete鈥 me sale el siguiente mensaje de error:

鈥淭he DELETE method is not supported for this route. Supported methods: GET, HEAD, POST.鈥

No he podido resolverlo aun. Me pueden ayudar con este issue.

De acuerdo con el sitio de Laravel tambi茅n se puede llamar al m茅todo destroy() de forma est谩tica sin tener que crear un nuevo objeto, pasando uno o m谩s ids

ExpenseReport::destroy($id);

https://laravel.com/docs/7.x/eloquent#deleting-models

hay comando para limpiar CACHE:

php artisan config:cache
php artisan config:clear```

Que bieeen!
Interesante y 煤til la manera para borrar reportes