首页 > 解决方案 > Laravel 中的星级和半星评级

问题描述

我想以星级显示平均产品评级。值显示良好,但如果值是浮动的,我想显示半星。

我的刀片视图:

<div class="rating">
  @for($i=0;$i<5;$i++)
    @if($product->ratings->avg('rating') > $i)
      <span class="icon-ratings"><i class="icon-rating icon-rating-x"></i></span>
    @else
      <span class="icon-ratings"><i class="icon-rating icon-rating-o"></i></span>
    @endif
  @endfor
 &nbsp; <div style="float:left">{{$product->ratings->avg('rating')}}</div>
</div>

平均值显示为 4.5。但是所有的5颗星都充满了金色。我想填充最后一半的星,因为那是一个浮点数。

标签: javascriptphpcsslaravele-commerce

解决方案


使用floor()函数来检测这样的浮点值

.................
@for($i=0;$i<5;$i++)

  <?php
    $thisRating = product->ratings->avg('rating')
    if(floor($thisRating) != $thisRating) {
      $hasHalfVal = 1;
    } else {
      $hasHalfVal = 0;
    }
  ?>

   @if($thisRating > $i && $hasHalfVal == 0)
     <span class="icon-ratings"><i class="icon-rating icon-rating-x"></i></span>
   @else if($thisRating > $i && $hasHalfVal == 1) 
     <span class="icon-ratings"><i class="icon-rating icon-rating-half"></i></span>
   @else
     <span class="icon-ratings"><i class="icon-rating icon-rating-o"></i></span>
   @endif

 .................

推荐阅读