Yii2 - Kartik Widget-Rating перезаписывает значения - PullRequest
0 голосов
/ 02 мая 2019

возможно ли перезаписать значения каждой звезды? мне нужно определить шаг = 3,75, мин = 0 и макс = 15, и не дать выбрать половину звезды. значения, которые я хочу:

звезда 1 => 0; звезда 2 => 3,75; звезда 3 => 7,5; звезда 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,
    ]
]);

но когда я делаю это, выбор каждой звезды отображается некорректно, выбирается половина звезды.

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Я думал, что вы хотите отобразить только клиентскую часть (с ручными номерами). И вы не получите номера из БД
правильный способ - переписать файл 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 голосов
/ 02 мая 2019

Вы сделали неправильные настройки.

Подробнее см. В документации к плагину и демонстрации.

цитата 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% каждой звезды для каждой шаг. * +1021 *

Так, например, 2 выше, звезды не будут выделены полностью по желанию. Поэтому важно, чтобы вы установили конфигурацию звезды, мин, макс и шаг правильно. Для получения подробной информации см. документацию к плагину и демонстрационные версии.

для Вас:

'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
    Однако лучше, чтобы rate и step были равны.
    Например, если step равно 2, лучше, чем 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 балла
...