以下代码可以设置星号并将数字传递给数据库并进行设置。但是,当我刷新页面时,星星消失了,因此不清楚用户是否进行了评论。
我希望能够通过标明星级的用户来获取用户评分。
我正在使用名为rateable和rateYo的软件包,该软件包可让您设置星星。
(下面您可以将一颗星星设置得很好,然后提交将其传递到数据库中)
当您转介时,您会得到
所以我试图获取星星的数量。
这是我到目前为止所拥有的
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');
关于如何解决此问题或如何解决此问题的任何建议?
答案 0 :(得分:-1)
首先以这种方式在HTML中打印您的评分。
<div id="rateYo" data-rating="{{ $book->rating }}"></div>
然后更改javascript以从数据属性设置评分:
var rating = $('#rateYo').data("rating")
$('#rateYo').rateYo({
starWidth: "20px",
rating: rating
});
我认为它将起作用。