Laravel用Ajax评论

时间:2018-07-11 03:45:33

标签: ajax laravel laravel-5.6

所以我有一个laravel评论系统,可以使用ajax进行评论。我当前的设置很简单。我有一个要评论的字段,然后我的路线如下:

Route::post(‘comment/{post_id}’, ‘CommentController@insert’);

在我的Ajax网址中,我给了post_id相同的路由。我提供帖子ID是因为我想将帖子ID添加到我的评论表的post_id列中。我的ajax也符合要求。

现在我的问题是,我不知道如何在评论中添加回复。我必须将comment_id插入到我的回复表comment_id列中,因为评论和回复是相关的。令我感到困惑的是,如果我为每个注释创建了带有foreach循环的大量答复表单,那么如何将所有这些注释ID传递给Ajax? 举个例子,这是我存储回复的途径

Route::post(‘replies/{comment_id}’, ‘ReplyController@insert’);

这不会像注释,我将仅传递参数(post_id)的值。此回复将为一个参数包含很多值,对吗?那么我该如何进行呢。我是ajax的新手,我很难理解这一点。就像我之前提到的那样,混乱之处在于每个答复都将有一个单独的comment_id,我需要将其传递给route参数。

4 个答案:

答案 0 :(得分:1)

您应该像下面这样通过:

Route::post('/comment/{comment_id}/replies','ReplyController@insert');

答案 1 :(得分:1)

您可以尝试这样

查看(此处假设为$comments$comment->replies,您可能会有所不同)

<div class="post-comments">
    <p>Comments</p>
     @foreach($comments as $comment)
        <p>{{$comment->text}}<p>

        <label>Replies:</label>
        <ul>
          @foreach($comment->replies as $reply)
            <li>{{$reply->text}}</li>
          @endforeach
           <form name="replyForm">
               <input name="reply" />
               <button type="button" onclick="replyComment('/comment/{{$comment->id}}/reply', this.form.reply)">Reply</button>
          </form>
        </ul>
     @endforeach
  </div>

JavaScript

function replyComment(url, input){

   console.log(url);
   console.log(input.value);
   //call ajax with this url and input value
}

路线

Route::post('comment/{comment_id}/reply', 'ReplyController@insert);

答案 2 :(得分:1)

<input type="submit" style="float: right;" class="btn btn-primary" value="Comment" id="comment" data-url="/comment/{{$comment->id}}/replies" data-token="{{ csrf_token() }}" data-comment_id="{{$comment->id}}" >

假设您正在从控制器中获取$ comment。 即使您要添加按钮,也无需添加<form>

答案 3 :(得分:0)

您必须在回复时通过post_id

路线类似:

Route::`post(‘replies/{post_id}/{comment_id}’, ‘ReplyController@insert’);`

然后通过插入时间对那些评论进行排序。