Yii2 - Kartik Widget-Rating覆盖值

问题描述 投票:0回答:2

它有可能覆盖每颗恒星的价值吗?我需要定义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,
    ]
]);

但是当我这样做时,每颗星的选择都没有正确显示,选择了一半的星。

php yii2 rating kartik-v
2个回答
1
投票

我以为你只想显示客户端(带有手动号码)。你不会从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,输入您的字段名称(费率字段)。


0
投票

您的设置不正确。

有关详细信息,请参阅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和演示。

for You:

'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(星= 6,最大= 12,步= 1)=>半星=一点 值:2,4,6,... 12(星= 6,最大= 12,步= 1)=>一颗星= 2点
© www.soinside.com 2019 - 2024. All rights reserved.