是否有可能覆盖每个星星的值? 我需要定义步长= 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;
}
但是当我这样做时,每个星星的选择显示不正确,一半的星星被选中。
答案 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';}")
]
]);
将数字放入以下公式后:
(max - min) * step * 100 / stars
等于:50% or 100%
要只显示一个完整的星星,请等于:100%
rate
和step
最好相等。
step
为2
,则优于max
等于10(5星)