Creando comentarios

Lo primero que tenemos que hacer en un comentario es saberlo relacionar con el Post que queremos comentar, en la vista de post hay un formulario para crear comentarios, añadiremos un campo oculto con el post_id para identificar a que post va el comentario:

<input type="hidden" name="post_id" value="{‌{ $post->id }}">

 

Lo siguiente que tenemos que hacer es editar el controller CommentController@postCreatecomment, el cual es el método que va el formulario para crear el comentario, recordad poner el use para los modelos y el Input para los formularios:

use Input;
use App\Models\Comment;

 

Con la ayuda del modelo Comment, creamos el comentario igual que como creamos los Post:

public function postCreatecomment() {
   
   $input = Input::all();

   $comment = new Comment();

   $comment->username = $input['user'];
   $comment->text = $input['comment'];
   $comment->post_id = $input['post_id'];

   $comment->save();

   return 'Comentario creado!';
}

 

Probamos que funciona:

Listando comentarios

Como hemos hecho anteriormente con los post, vamos al controlador PostController, y en el método getPost le vamos a pasar todos los comentarios a la vista post:

Recordad poner el use App\Models\Comment;

public function getPost($id) {
   
   $post = Post::find($id);

   if($post == null)
       return 'No existe el post';
   else {
       $data['post'] = $post;
       $data['comments'] = Comment::where('post_id', $id)->get();
       return view('post', $data);
   }

}

 

Ahora que tenemos los comentarios en la vista, vamos a printarlos en bucle:

{‌{-- Bucle de comentarios --}}
@foreach($comments as $comment)
   <div class="panel panel-primary">
       <div class="panel-heading">
           <h3 class="panel-title">
               {‌{ $comment->username }}
               <a href="{‌{ url('comments/deletecomment/'.$comment->id) }}" class="btn btn-danger btn-xs pull-right">X</a>
           </h3>
       </div>
       <div class="panel-body">
           {‌{ $comment->text }}
       </div>
   </div>
@endforeach
{‌{-- END Bucle de comentarios --}}

 

Eliminando comentarios

Igual que los posts:

public function getDeletecomment($id) {
   $comment = Comment::find($id);

   if($comment == null)
       return 'El comentario no existe';
   else
       $comment->delete();

   return 'Comentario eliminado';
}