Laravel - перегруженная симпатичная система не работает - PullRequest
0 голосов
/ 02 апреля 2020

Итак, у меня есть мой автомобильный проект, и я хочу, чтобы мои машины были Likeabel. Поэтому я установил overtrue likeable с composer require overtrue/laravel-follow и делаю все, что требуется. Я следовал уроку от здесь .

Так что это мой код. Мой CarsController@ajaxRequest:

/**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function ajaxRequest(Request $request){


        $car = Car::find($request->id);
        $response = auth()->user()->toggleLike($car);


        return response()->json(['success'=>$response]);
    }

Это мой маршрут в web.php: Route::post('ajaxRequest', 'CarsController@ajaxRequest')->name('ajaxRequest');.

Это мои машины index.blade.php:

@foreach($cars as $car)
   @if($car->placeni_status != 0)
        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" data-id="{{ $car->id }}">
        <div class="auto-listing">
        <div class="cs-media auto-media-slider">
            @foreach (explode('|', $car->fotografije) as $fotografija)<?php $img = explode('|', $car->fotografije); ?>
               <figure>
                    <img src="/slike_oglasa/{{$fotografija}}" alt="#"/>
                    <figcaption>
                        <span class="auto-featured">PREMIUM</span>
                        <a href="#" class="play-btn"><i class="icon-play3"></i></a>
                        <div class="cs-photo">8 Photos</div>
                    </figcaption>
                </figure>
            @endforeach
        </div>
        <div class="auto-text">
            <span class="cs-categories"><a href="#">Timlers Motors</a></span>
            <div class="post-title">
                <h4><a href="/cars/{{$car->id}}">{{$car->naslov}}</a></h4>
                <h6><a href="#">{{$car->naslov}}</a></h6>
                <div class="auto-price"><span class="cs-color">{{$car->cijena}} &euro;</span> <em>{{$car->vrsta_cijene}}</em></div>
                <a href="#"><img src="assets/extra-images/post-list-img1.jpg" alt=""/></a>
             </div>
             <ul class="auto-info-detail">
                <li>Godiste<span>{{$car->godiste}}</span></li>
                <li>Kilometraza<span>{{$car->kilometraza}}</span></li>
                <li>Mjenjac<span>{{$car->mjenjac}}</span></li>
                <li>Gorivo<span>{{$car->gorivo}}</span></li>
            </ul>
            <div class="btn-list">
            <a href="javascript:void(0)" class="btn btn-danger collapsed" data-toggle="collapse" data-target="#list-view"></a><div id="list-view" class="collapse">
            <ul>
            <li><b>Marka:</b> {{$car->marka}}</li>
            <li><b>Model:</b> {{$car->model}}</li>
            <li><b>Kubikaza:</b> {{$car->kubikaza}}cc</li>
            <li><b>Kilovata:</b> {{$car->kilovata}}kW</li>
            <li><b>Konjska snaga:</b> {{$car->konjska_snaga}}ks</li>
            <li><b>Registrovan do:</b> {{$car->registracija}}</li>
            </ul>
            </div>
            </div>
            <div class="cs-checkbox">
            <input type="checkbox" name="list" value="check-listn" id="check-list">
            <label for="check-list">Uporedi</label>
            </div>
            <i id="like{{$car->id}}" class="glyphicon glyphicon-thumbs-up {{ auth()->user()->hasLiked($car) ? 'like-post' : '' }}"></i> <div id="like{{$car->id}}-bs3">{{ $car->likers()->get()->count() }}</div>
            <label for="check-list1" style="text-transform: uppercase; color:gray;font-size: 11px;padding-left: 10px;">&nbsp;&nbsp;&nbsp;&nbsp;{{$car->user->city}}</label>
            <a href="#" class="View-btn">Pogledajte vise<i class=" icon-arrow-long-right"></i></a>
            </div>
        </div>
    </div>
@else

А это скрипт для подобной системы:

<script type="text/javascript">
    $(document).ready(function() {     

        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

        $('i.glyphicon-thumbs-up, i.glyphicon-thumbs-down').click(function(){    
            var id = $(this).parents(".panel").data('id');
            var c = $('#'+this.id+'-bs3').html();
            var cObjId = this.id;
            var cObj = $(this);

            $.ajax({
               type:'POST',
               url:'/ajaxRequest',
               data:{id:id},
               success:function(data){
                  if(jQuery.isEmptyObject(data.success.attached)){
                    $('#'+cObjId+'-bs3').html(parseInt(c)-1);
                    $(cObj).removeClass("like-post");
                  }else{
                    $('#'+cObjId+'-bs3').html(parseInt(c)+1);
                    $(cObj).addClass("like-post");
                  }
               }
            });
        });      


        $(document).delegate('*[data-toggle="lightbox"]', 'click', function(event) {
            event.preventDefault();
            $(this).ekkoLightbox();
        });                                        
    }); 
</script>

Но когда я нажимаю лайк и проверяю его в консоли это показывает мне ошибку:

jquery. js: 4 POST http://localhost: 8000 / ajaxRequest 419 (неизвестный статус)

и в предварительном просмотре это показывает мне это:

{message: "CSRF token mismatch.", exception: "Symfony\Component\HttpKernel\Exception\HttpException",…}
message: "CSRF token mismatch."
exception: "Symfony\Component\HttpKernel\Exception\HttpException"
file: "C:\engineering\xampp\htdocs\autoplac\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php"
line: 208
trace: [{,…},…]

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете добавить маршрут к массиву App\Http\Middleware\VerifyCsrfToken, $except, чтобы отключить проверку csrf для указанного c маршрута. Или вы можете отправить свой токен csrf в вашем ajax запросе

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

отметьте do c

...