Bonjour,
J'ai suivi le tuto grafikart du réseau social, et suite à la partie "commentaires", j'essaie d'ajouter une chose à mon système, à savoir la "réponse au commentaire".
J'ai mon commentaire d'écrit, et sur ce commentaire je souhaite pouvoir y répondre, à la manière des commentaires Facebook. Quand je cliquerais sur le boutton "Répondre", j'aurais accès à un formulaire de réponse et je pourrais écrire dessus.

Mon soucis c'est que je ne sais pas du tout comment faire, pour différencier les commentaires de bases des réponses, comment afficher les réponses, ce genre de choses.

Je sais pas vraiment quoi mettre en code, si vous voulez j'ai la vue avec l'affichage de mes commentaires :

@foreach($comments as $comment)
    <div class="co col-md-12">
        <div class="co1 col-md-1">
            @if(isset($comment->user->avatar))
                <img class="imguser" src="{{url("public{$comment->user->avatar}") }}">
            @else
                <img class="imguser" src="{{url("public/images/avatar/default.jpg") }}">
            @endif
        </div>
        <div class="col-md-1">
            <p class="c1"><strong>{{$comment->pseudo}}</strong></p>
            <em>{{$comment->created_at->diffForHumans()}}</em>
        </div>
        <div class="c8 col-md-9">
            <div class="cm">
                <p class="text-right">
                    Répondre
                    <a href="{{ route('comments.edit', $comment) }}">Editer </a>
                    <a href="{{ action('CommentsController@destroy', $comment) }}"
                       data-method="delete" data-confirm="Voulez vous vraiment supprimer le commentaire ?">
                       <span class="glyphicon glyphicon-remove remove"></span>
                    </a>
                </p>
            </div>
            <div class="texx">
                {{$comment->content}}
            </div>

        </div>
    </div>
@endforeach

& mon CommentsController :

public function store(CommentsRequest $request, Guard $auth){
        $data = $request->only('pseudo', 'email', 'content', 'produit_id');
        if($auth->user()){
            $data['user_id'] = $auth->user()->id;
        }
        Comment::create($data);
        return redirect()->back()->with('success', 'Merci pour votre commentaire');

    }

Si vous avez une idée qui me permettrais d'avancer, ou si vous connaissez un tutoriel qui m'aiderait aussi, je vous remercie d'avance !

5 réponses


betaWeb
Réponse acceptée

Salut,

Comme le dit pierredes, tu dois rajouter un champ parent_id, et lorsque la personne répond à un commentaire, il suffit de créer un new commentaire avec l'ID du commentaire auquel il a répondu.
Sinon, tu peux regarder et t'inspirer de ces deux tutoriels : https://www.grafikart.fr/tutoriels/laravel/commentaire-vuejs-laravel-part1-761 && https://www.grafikart.fr/tutoriels/vuejs/commentaire-vuejs-laravel-part2-762 ;)

Tu rajoute un parent_id avec l'id du commentaire auquel tu repond tout simplement

iGenezys
Auteur

Bonjour, merci pour ta réponse.

Du coup, dans la procédure, mon formulaire de "réponse au commentaire" va pointer sur une fonction du controller différente de Store, et va ajouter le commentaire en rajoutant un champs "parent _ id" qui sert à savoir à quel commentaire il réponds.

J'arrive à comprendre à peu prêt ça, après je n'arrive pas à situer comment, dans l'affichage des réponses, je vais pouvoir afficher les réponses par commentaires (les réponses au com 1 sous le com 1 et les réponses au com 2 sous le com 2)

J'essaie déjà de créer les commentaires, en tout cas merci.

EDIT : Je n'avais pas vu ta réponse @betaWeb, du coup je vais aussi jeter un oeil à ces tutoriels :)

Bonsoir.

J'arrive à comprendre à peu prêt ça, après je n'arrive pas à situer comment, dans l'affichage des réponses, je vais pouvoir afficher les réponses par commentaires (les réponses au com 1 sous le com 1 et les réponses au com 2 sous le com 2)

Tu pourrais par exemple t'inspirer de Tutoriel Vidéo PHP » Commentaires imbriqués.

iGenezys
Auteur

Merci pour votre réponse.
Le soucis à été réglé, j'ai compris le principe du parent _ id et comment placer correctement mes réponses.
Merci à tous !