它有可能覆盖每颗恒星的价值吗?我需要定义step = 3.75,min = 0和max = 15,并防止选择半个星。我想要的价值是:
star 1 => 0;明星2 => 3.75;星3 => 7.5; star 4 => 11,25;星5 => 15。
form.php的
echo $form->field($model, 'rating')->widget(StarRating::classname(), [
'pluginOptions' => [
'stars' => 5,
'step' => 3.75,
'min' => 0,
'max' => 15,
]
]);
但是当我这样做时,每颗星的选择都没有正确显示,选择了一半的星。
我以为你只想显示客户端(带有手动号码)。你不会从DB获得数字
正确的方法是覆盖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
,输入您的字段名称(费率字段)。
您的设置不正确。
有关详细信息,请参阅plugin documentation和演示。
引用krajee:
突出显示恒星的逻辑取决于星形,最小值,最大值和步长配置。将使用以下表达式评估每个步骤要突出显示的每个星的百分比:
STAR_HIGHLIGHT_PERCENT = (max - min) * step * 100 / stars
例如:
如果min = 0,max = 5,step = 0.5,stars = 5,则STAR_HIGHLIGHT_PERCENT将评估每个步骤的每颗星的50%。
如果min = 1,max = 5,step = 0.5,Stars = 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星)