Adquiere este curso para tener acceso a todas las lecciones
Comprar curso110. Route Model Binding
2 comentarios
Inicia sesión para comentar
Comentarios:
-
Luis Felipe Vasquez Yepez hace 7 meses
Tengo “problemas” al generar los datos en los factorys y es que no me funciona con el metodo fake()→sentence(). si no que en su caso tengo que colocar faker→sentence
-
Gerardo Vera Velasco hace 1 año
Este tema no lo sentí muy bien explicado, faltó mencionar que tienes que poner en el controlador el nombre de el modelo para poder realizar la inyección de modelos
-
Eduardo Martínez hace 1 año
Buenas!
Tienes razón, en las anteriores unidades no hemos realizado los cambios necesarios para que nos funcione el route binding. No obstante no es demasiado complicado, y si a alguien le sirve, estos son los pasos que hice para refactorizar el código de acuerdo con lo que vemos en el vídeo:
1. En las vistas
Si observamos nuestra vista posts.index, en el enlace que nos enrutaba a la vista show pasábamos $post->id como parámetro. Ahora, en lugar del id, pasarémos la instancia completa , dejando $post a secas.
Este cambio será igual en las demás vistas, por lo que debes revisar las diferentes vistas y allá donde enrutábamos pasando el id de la instancia, ahora pasamos la instancia en sí.2. En los controladores
Este cambio se aprecia también en el vídeo pero quizás pasa desapercibido.
Vamos a centrarnos en el método show() para la explicación:
Antes, nosotros recibíamos un parámetro de tipo string llamado $post. En él se almacenaba el id del post, por lo que a continuación sustituíamos el valor de la variable, al localizar el post correspondiente a dicho id, por medio del método find():
public function show(string $post) { $post = Post::find($post); return view('posts.show', compact('post')); }
Ahora lo cambiamos para pasar la instancia del post en sí; ya no será no necesario buscarlo. Cambiamos el tipo del parámetro (de string a Post), y eliminamos el método find():
public function show(Post $post) { return view('posts.show', compact('post')); }
Revisa los demás métodos del controlador donde se pasaba el parámetro “$post” y realiza el mismo cambio.
-
Jaime Salazar hace 1 año
Muchísimas gracias,
-