所以我有一个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参数。
答案 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’);`
然后通过插入时间对那些评论进行排序。