Целевой класс с ajax в laravel - PullRequest
0 голосов
/ 10 апреля 2019

Я создаю университетскую социальную сеть, которая будет включать некоторые сценарии и легкий поиск работы.До сих пор я следовал учебникам Максимилиана из Academind, и мне нужно изменить функцию лайков, чтобы работать с моим новым дизайном.Я хочу использовать «нравится» и «не нравится» с ajax в режиме реального времени, и, отправляя его, я хочу изменить цвет своего значка.

Также провел весь день, пытаясь реализовать счетчик лайков и антипатий, но никогда не получал его вв реальном времени

PostController.php

......


 public function postLikePost(Request $request)
    {
        $post_id = $request['postId'];
        $is_like = $request['isLike'] === 'true';
        $update = false;
        $post = Post::find($post_id);
        if (!$post) {
            return null;
        }
        $user = Auth::user();
        $like = $user->likes()->where('post_id', $post_id)->first();
        if ($like) {
            $already_like = $like->like;
            $update = true;
            if ($already_like == $is_like) {
                $like->delete();
                return null;
            }
        } else {
            $like = new Like();
        }
        $like->like = $is_like;
        $like->user_id = $user->id;
        $like->post_id = $post->id;
        if ($update) {
            $like->update();
        } else {
            $like->save();
        }
        return null;
    }

app.js

var postId = 0;
var postBodyElement = null;

.....


$('.like').on('click', function(event) {
    event.preventDefault();
    postId = event.target.parentNode.parentNode.dataset['postid'];
    var isLike = event.target.previousElementSibling == null;
    $.ajax({
        method: 'POST',
        url: urlLike,
        data: {isLike: isLike, postId: postId, _token: token}
    })
        .done(function() {
            event.target.innerText = isLike ? event.target.innerText == 'Like' ? 'You like this post' : 'Like' : event.target.innerText == 'Dislike' ? 'You don\'t like this post' : 'Dislike';
            if (isLike) {
                event.target.nextElementSibling.innerText = 'Dislike';
            } else {
                event.target.previousElementSibling.innerText = 'Like';
            }
        });
});

Dashboard.blade.php

......


<div class="like_comment_area row">
                <div class="col s4 btn_floating">
                    <a class="btn-floating waves-effect"><i class="ion-android-share-alt"></i></a>
                    <h6>128k</h6>
                </div>
                <div class="col s4 updown_btn" data-postid="{{ $post->id }}">
                    <a href="#" class="like"><i class="ion-android-arrow-dropup-circle"></i></a>
                    <a href="#" class="like"><i class="ion-android-arrow-dropdown-circle"></i></a>
                    <a href="#" class="count_n">483</a>
                </div>
                <div class="col s4 updown_btn comment_c">
                    <a href="#"><i class="ion-ios-chatboxes-outline"></i></a>
                    <a href="#" class="count_n">14</a>
                </div>

            </div>

Я надеюсь, что кто-то может мне помочьили дайте ответ на "легкую" проблему, которая у меня есть.

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