Использование CStarRating

На днях в проекте понадобилось использовать рейтинг статей и решил опробовать виджетCStarRating. Оказалось это очень просто и удобно ;).
Подключаем виджет в представлении:

$configStarRaiting = array(
    'model'=>$model, // модель
    'attribute'=>'raiting', // атрибут модели, в котором хранится рейтинг
    'allowEmpty'=>false, // убирает кнопку отмены голосования
    'maxRating'=>10, // максимальное значение
    'minRating'=>1, // минимальное значение
    // checkVoice - метод модели, который определяет:
    // если юзер голосовал, то устанавливаем значение readOnly = true
    // для того чтобы предотвратить повторное голосование.
    'readOnly'=>$model->checkVoice(Yii::app()->user->id), 
    'callback'=>'
function(value, link){
    $.ajax({
        "type" : "POST",
        "url" : "' . $this->createUrl('articles/raiting') . '",
        "dataType" : "json",
        "success" : function(data) {
                if(data.status == "OK") {
                    alert(data.message);
                    $("#raiting > input").rating("readOnly", true);
                } else {
                    alert(data.message);
                }                
            },
        "cache" : false,
        "data" : {point:value, id: '.$model->id.'}
    });
}
',
);
$this->widget('CStarRating', $configStarRaiting);

В callback функции отправляется запрос на url articles/raiting в котором идет зачисление голоса и возвращает JSON ответ, который содержит status(OK, ERROR) и message в котором содержится сообщение. Если status == ‘OK’, то помимо вывода сообщения, усанавливаем значения виджета readOnly = true, ведь человеку можно голосовать всего один раз.