如何获取Laravel中带有星星的用户评分

时间:2018-07-24 12:29:31

标签: javascript php jquery laravel

以下代码可以设置星号并将数字传递给数据库并进行设置。但是,当我刷新页面时,星星消失了,因此不清楚用户是否进行了评论。

我希望能够通过标明星级的用户来获取用户评分。

我正在使用名为rateablerateYo的软件包,该软件包可让您设置星星。

(下面您可以将一颗星星设置得很好,然后提交将其传递到数据库中)

enter image description here

当您转介时,您会得到

enter image description here

所以我试图获取星星的数量。

这是我到目前为止所拥有的

Main.js

$(document).ready(function(){
        'use strict'

        $('#rateYo').rateYo({
            starWidth: "20px",

        });


        $('#rateYo').click(function(){
            var rating = $('#rateYo').rateYo("rating");
            console.log(rating);

             $('#val').val(rating);


        }); 
       // an ajax function goes here but not sure how to approach this and within the 
      // function i do know that rating needs to be set to the user submitted rating 
      //so that it can fetch the amount of starts
      $('#rateYo').rateYo({
           rating:1-5

        });



});

show.blade.php

<form action="{{ route('rate', $book->id) }}" method="POST">
   {!! csrf_field() !!}

      <div id="rateYo"></div>
      <input name="val" value='' type="hidden" id="val" >

      <button type="submit" class="btn btn-primary mt-2">submit</button>
</form>

控制器

// this is where im stuck, this is where im attempting to fetch the stars from 
//a user, but im not sure what im doing, i don't how i would pass it in
public function rating($rating)
{
    $book = Book::getRatingAttribute($rating)->userSumRating() ;

    return json_encode($book);
}

图书(型号)

public function getRatingAttribute($rating)
{
    return Rateable::where('rating',  $rating )->where('user_id',Auth()->user()->id)->first();
}

路线

Route::get('rate/{rating}', 'BookController@rating');

关于如何解决此问题或如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:-1)

首先以这种方式在HTML中打印您的评分。

<div id="rateYo" data-rating="{{ $book->rating }}"></div>

然后更改javascript以从数据属性设置评分:

var rating = $('#rateYo').data("rating")
$('#rateYo').rateYo({
            starWidth: "20px",
            rating: rating
        });

我认为它将起作用。