Laravel 5.4 #17 : Añadir comentarios a los posts

Vamos añadir la posibilidad a los usuarios logueados de comentar en los posts.

Primero tenemos que añadir la tabla comentarios en la base de datos. Para eso, como siempre, tenemos que crear una migración:

Con este contenido:

Y la ejecutamos.

 

Una vez tenemos esto, tenemos que crear el controlador y el modelo para los comentarios. Laravel nos permite hacer esto simplemente con un comando:

Abrimos el modelo Comment.php :

Añadimos las relaciones con comentarios en los modelos de Post.php  y User.php :

Cuando hayas puesto esto, ya podremos acceder a los comentarios de un posts y a los comentarios de un usuario fácilmente.

 

Vamos al controlador y añadimos el siguiente código:

Sólo ponemos el método store, que es el que crea el comentario en la base datos, más tarde le añadiremos más funcionalidades.

Antes de continuar, deberemos modificar la ruta que muestra el detalle de un post y añadirle un nombre:

 

Ahora, creamos el Form Request para validar la información enviada del comentario que queremos insertar ( php artisan make:request CommentRequest) y añadimos este código:

Comprueba que el usuario esté logueado y que el comentario tenga contenido y que sean máximo 1000 caracteres.

Falta la ruta:

Si te fijas, hemos añadido la ruta de otra manera. Esta forma añade todas las rutas automáticamente, sin tener que ir una por una.

 

Añadimos el formulario y la lista de comentarios del post concreto a la vista:

Y si queremos, podemos añadir el número de comentarios que tiene un post en la lista de posts:

La función str_plural nos ayuda a transformar en plural una cadena de texto según el número que le pasemos.

 


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

9 comentarios en “Laravel 5.4 #17 : Añadir comentarios a los posts

  1. Buen día,
    Excelente tutorial, lo he estado siguiente al pie de la letra pero tengo un problema cuando voy a ver algún comentario sale el siguiente error
    Route [posts.show] not defined.
    Igualmente sale error cuando coloco la línea en la vista de posts:
    {{$post->comments->count()}} {{ str_plural(‘comment’, $post->comments->count()) }}

    Gracias por su ayuda.

    1. Hola Meissner,
      Ese error es porque te falta añadir el name a la ruta que muestra el detalle de un post.
      Ya he modificado la entrada, parece ser que me había olvidado de incluir la modificación.
      Saludos!

  2. Hola amigo como hago para que un comentario sea publicado o no . o mas bien moderar cada comemtario de ante mano muchas gracias por tu gran ayuada saludos!!

    1. Hola Mauro!
      Muchas gracias por tu comentario.

      Lo que podrías hacer es crear un campo tipo integer en la tabla de comentarios que se llame status. Entonces, cada valor corresponderá un estado: 0 = no publicado, 1 = en revisión, 2 = publicado, etc, por ejemplo. Y cuando muestras los comentarios filtras por este campo según lo que quieras obtener.

      Espero haberme explicado y que te sea de gran ayuda.

Deja una respuesta

  Acepto la política de privacidad