Ссылка на определенную часть страницы - PullRequest
0 голосов
/ 19 мая 2018

У меня есть div, в котором много постов, который создается динамически из базы данных.У div также есть вход для комментариев.У меня нет проблем с публикацией комментариев, и я делаю это с помощью метода POST.Затем я перенаправляю на страницу, используя метод return redirect('/');.Но он ссылается на начало страницы, которая не производит хорошего впечатления на пользователя.Пользователь может быть в середине страницы, и когда он / она комментирует, он перейдет в начало страницы и ему придется снова прокрутить страницу вниз.К счастью, у меня есть div с классом, равным post_id.Итак, нет ли способа перейти к сообщению, в котором пользователь разместил сообщение с использованием этого класса?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

прикрепите идентификатор с URL, например, "/ # post-id"

0 голосов
/ 19 мая 2018

Внутри вашего контроллера, где вы обрабатываете и сохраняете комментарии:

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>

Обратите внимание: это всего лишь примеркод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...