Yii2-Kartik小部件评分覆盖值

时间:2019-05-01 21:45:45

标签: php yii2 rating kartik-v

是否有可能覆盖每个星星的值? 我需要定义步长= 3.75,最小值= 0,最大值= 15,并防止选择半颗星星。 我想要的值是:

  

星级1 => 0;星2 => 3.75;星3 => 7.5;星4 => 11,25;星5   => 15。

form.php

int i,j,k;
i = 5;
j = 1;
k = 5;

while (i > 0)
{   
    while (j < i)
    {
        printf(" ");
        j++;
    }
    while (k >= i)
    {
        printf("*");
        k--;
    }
    printf("\n");
    i--;
    j = 1;
    k = 5;
}

但是当我这样做时,每个星星的选择显示不正确,一半的星星被选中。

2 个答案:

答案 0 :(得分:1)

我认为您只想显示客户端(带有手册编号)。而且您不会从数据库中获取数字
正确的方法是覆盖star-rating文件。哪个可以参考Kartik论坛。
您必须覆盖第一颗星得分为零(突出显示第一颗星= 0)
但是,您可以在模型中使用以下代码。

public function beforeSave($insert)
{
    // if ($insert) {  // only for Save (No Update)
        if (!empty($this->Your_field)) {
            $this->setAttribute('Your_field', $this->Your_field-3.75);
        }
    // }
    return parent::beforeSave($insert);
}

输入字段名称(费率字段),而不是your_field

答案 1 :(得分:0)

您所做的设置不正确。

有关详细信息,请参见plugin documentation和演示。

引号krajee:

  

突出显示星星的逻辑取决于星星,最小,最大和   步骤配置。要突出显示的每颗星的百分比   每个步骤都将使用以下表达式求值:

     

STAR_HIGHLIGHT_PERCENT = (max - min) * step * 100 / stars

     

例如:

     

如果最小值= 0,最大值= 5,步长= 0.5,星号= 5,则   STAR_HIGHLIGHT_PERCENT将为每颗星评估50%   步骤。

     

如果min = 1,max = 5,步长= 0.5,而星标= 5,则   STAR_HIGHLIGHT_PERCENT将为每颗星评估40%   步骤。

     

因此,例如上面的2,星星不会完全突出显示   如预期的。因此,重要的是设置   星星,最小,最大和正确步进。   有关详细信息,请参见plugin documentation和演示。

为您服务:

'stars' => 4, 
'step' => 3.75,
'min' => 0,
'max' => 15,

echo StarRating::widget(['name' => 'rating', 
    'pluginOptions' => [
    'stars' => 5, 
    'step' => 3.75,
    'min' => 0,
    'max' => 18.75,
    'starCaptions' => new JsExpression("function(val){return val-3.75 + ' hearts';}")
    ]
]);
  • 1
    如果您的字段值是1到5的整数
    要显示半星和全星,必须使用整数。

将数字放入以下公式后:

(max - min) * step * 100 / stars


等于:50% or 100%
要只显示一个完整的星星,请等于:100%

  • 2
    但是,ratestep最好相等。
    例如,如果step2,则优于max等于10(5星)
  • 3
    所有这一切都取决于您的字段的值: 例如:
    值:.5、1、1.5,... 5 默认值(星数= 5,最大值= 5,步长= 0.5)
    值:1、2、3,... 5 (星级= 5,最大= 5,步长= 1)
    值:1、2、3,... 12 (stars = 6,max = 12,step = 1)=>半颗星= 1分
    值:2、4、6,... 12 (stars = 6,max = 12,step = 1)=>一颗星星= 2点