我有一个包含大量帖子的div,这些帖子是从数据库动态创建的。 div也有注释工具的输入。发布评论时我没有问题,我使用POST
方法。然后我使用return redirect('/');
方法重定向到该页面。但它链接到页面的开头,不会给用户留下好印象。用户可能位于页面中间,当他/她发表评论时,他将转到页面的开头,并且必须再次向下滚动。幸运的是,我的div与class等于post_id。那么,是否有任何方法可以转到用户使用该类发布的帖子?
答案 0 :(得分:1)
将id添加到网址,例如“/#post-id”
答案 1 :(得分:0)
在您正在处理和保存评论的控制器内:
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\URL;
public function yourCommentSaveFunction()
{
...
//Get the Post ID and store in $postid
return Redirect::to(URL::previous() . '#' .$postid);
}
这应该可以正常工作。 但最好的方法是使用AJAX发表评论。
编辑(按OP请求)
AJAX方法
控制器将类似于:
public function saveComment(Request $request)
{
//you do the saving part..
...
$comment = $request->comment;
//after saving the comment return a json response
//you can also send other varibales like username, created at etc..
return Response::json(array(
'success' => true,
'comment' => $comment,
));
}
路线:
Route::post('/save-comment', [
'as' => 'save-comment',
'uses' => 'yourController@saveComment',
]);
你的观点:
<form action="{{ route('save-comment') }}" class="comment-form">
<input type="text" name="comment">
<input type="submit" name="submit">
<input type="hidden" name="_token" value="{{ csrf_token() }}"
<div class="comment"></div>
</form>
<script>
$('.comment-form').submit(function(event){
event.preventDefault();
var comment = $this.val();
var token = $('.token').val();
var $url = "{{ route('save-comment') }}";
$.ajax({
url: route,
type: 'POST',
data: {_token: token, comment: comment},
dataType: 'JSON',
success: function (data) {
$(".comment").append('<div class="new-comment">' +data.comment +'</div>');
},
error: function(data) {
console.log("Something went wrong");
}
});
});
</script>
请注意:这只是一个示例代码。