Spec-Zone.ru › Yii 1.1

CStarRating

Пакет system.web.widgets
Наследование class CStarRating » CInputWidget » CWidget » CBaseController » CComponent
С момента 1.0
Исходный код framework/web/widgets/CStarRating.php
CStarRating отображает элемент управления рейтингом звёзд, который может собирать входные данные о рейтинге пользователя.

CStarRating основан на Плагине рейтинга звёзд jQuery. Он отображает список звёзд, указывающих значения рейтинга. Пользователи могут переключать эти звёзды, чтобы указать свой рейтинг. На стороне сервера, когда входные данные рейтинга отправляются, значение может быть получено так же, как и при работе с обычным HTML-вводом. Например, используя
$this->widget('CStarRating',array('name'=>'rating'));
, мы можем получить значение рейтинга через $_POST['rating'].

CStarRating позволяет настраивать свой внешний вид. Он также поддерживает пустой рейтинг, а также чтение только рейтинга.

Общедоступные свойства

Свойство Тип Описание Определено
actionPrefix строка префикс к идентификаторам действий. CWidget
allowEmpty логическое указывает, может ли значение рейтинга быть пустым (не заданным). CStarRating
attribute строка атрибут, связанный с этим виджетом. CInputWidget
blur строка Обработчик событий при потере фокуса звёздами. CStarRating
callback строка Обработчик событий при нажатии на звёзды. CStarRating
controller CController Возвращает контроллер, к которому принадлежит этот виджет. CWidget
cssFile смешанный тип CSS-файл, используемый для виджета. CStarRating
focus строка Обработчик событий при получении фокуса звёздами. CStarRating
htmlOptions массив дополнительные HTML-опции, которые будут отображаться в теге ввода CInputWidget
id строка Возвращает идентификатор виджета или генерирует новый, если это запрошено. CWidget
maxRating смешанный тип максимальный разрешённый рейтинг. CStarRating
minRating смешанный тип минимальный разрешённый рейтинг. CStarRating
model CModel модель данных, связанная с этим виджетом. CInputWidget
name строка имя ввода. CInputWidget
owner CBaseController Возвращает владельца/создателя этого виджета. CWidget
ratingStepSize смешанный тип шаг рейтинга. CStarRating
readOnly логическое указывает, является ли значение рейтинга только для чтения. CStarRating
resetText строка текст подсказки для кнопки сброса. CStarRating
resetValue строка значение, принимаемое при очистке рейтинга. CStarRating
skin смешанный тип имя используемой темы виджета. CWidget
starCount целое число количество звёзд. CStarRating
starWidth целое число ширина изображения звезды. CStarRating
titles массив заголовки, связанные с вариантами рейтинга. CStarRating
value строка значение ввода. CInputWidget
viewPath строка Возвращает директорию, содержащую файлы представлений для этого виджета. CWidget

Защищённые свойства

Свойство Тип Описание Определено
clientOptions массив javascript-опции для рейтинга звёзд CStarRating

Общедоступные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CWidget
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
actions() Возвращает список действий, используемых этим виджетом. CWidget
asa() Возвращает объект именованного поведения. CComponent
attachBehavior() Присоединяет поведение к этому компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик событий к событию. CComponent
beginCache() Начинает кэширование фрагмента. CBaseController
beginClip() Начинает запись клипа. CBaseController
beginContent() Начинает отрисовку содержимого, которое должно быть оформлено указанным представлением. CBaseController
beginWidget() Создает виджет и выполняет его. CBaseController
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
createWidget() Создает виджет и инициализирует его. CBaseController
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает прикрепленное поведение. CComponent
disableBehaviors() Отключает все присоединенные поведения этого компонента. CComponent
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные поведения этого компонента. CComponent
endCache() Заканчивает кэширование фрагмента. CBaseController
endClip() Заканчивает запись клипа. CBaseController
endContent() Заканчивает отрисовку содержимого. CBaseController
endWidget() Заканчивает выполнение указанного виджета. CBaseController
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
getController() Возвращает контроллер, к которому относится этот виджет. CWidget
getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent
getId() Возвращает идентификатор виджета или генерирует новый, если требуется. CWidget
getOwner() Возвращает владельца/создателя этого виджета. CWidget
getViewFile() Ищет файл скрипта представления в соответствии с именем представления. CWidget
getViewPath() Возвращает каталог, содержащий файлы представлений для этого виджета. CWidget
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли у указанного события присоединенные обработчики. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует виджет. CWidget
raiseEvent() Вызывает событие. CComponent
registerClientScript() Регистрирует необходимые скрипты javascript и css. CStarRating
registerCssFile() Регистрирует необходимый файл CSS. CStarRating
render() Отображает представление. CWidget
renderFile() Отображает файл представления. CBaseController
renderInternal() Отображает файл представления. CBaseController
run() Выполняет виджет. CStarRating
setId() Устанавливает идентификатор виджета. CWidget
widget() Создает виджет и выполняет его. CBaseController

Защищенные методы

Метод Описание Определено в
getClientOptions() Возвращает javascript параметры для рейтинга звёзд. CStarRating
hasModel() Определяет, связан ли этот виджет с моделью данных. CInputWidget
renderStars() Отображает звёзды. CStarRating
resolveNameID() CInputWidget

Подробное описание свойств

allowEmpty свойство

public boolean $allowEmpty;

указывается, может ли значение рейтинга быть пустым (не установленным). По умолчанию true. Если true, кнопка сброса будет отображаться перед звёздами.

blur свойство

public string $blur;

Обратный вызов, когда звёзды не сфокусированы.

callback свойство

public string $callback;

Обработчик при нажатии на звёзды.

clientOptions свойство только для чтения

protected array getClientOptions()

параметры javascript для рейтинга звёзд

cssFile свойство

public mixed $cssFile;

файл CSS, используемый для виджета. По умолчанию null, что означает использование файла CSS по умолчанию, включённого вместе с виджетом. Если false, файл CSS не будет использоваться. В противном случае, указанный файл CSS будет включён при использовании этого виджета.

focus свойство

public string $focus;

Обработчик при фокусировке на звёздах.

maxRating свойство

public mixed $maxRating;

максимальный допустимый рейтинг. Может быть целым или вещественным значением. По умолчанию 10.

minRating свойство

public mixed $minRating;

минимальный допустимый рейтинг. Может быть целым или вещественным значением. По умолчанию 1.

ratingStepSize свойство

public mixed $ratingStepSize;

шаг рейтинга. Это минимальное различие между двумя значениями рейтинга. По умолчанию 1.

readOnly свойство

public boolean $readOnly;

является ли значение рейтинга только для чтения. По умолчанию false. Если true, рейтинг нельзя изменить.

resetText свойство

public string $resetText;

текст подсказки для кнопки сброса. По умолчанию null, что означает использование системного текста (который равен 'Отменить рейтинг').

resetValue свойство

public string $resetValue;

значение, принимаемое при очистке рейтинга. По умолчанию null, что означает использование системного значения (которое равно '').

starCount свойство

public integer $starCount;

количество звёзд. По умолчанию 5.

starWidth свойство

public integer $starWidth;

ширина изображения звезды. По умолчанию null, что означает использование системного значения (которое равно 16).

titles свойство

public array $titles;

заголовки, связанные с вариантами рейтинга. Ключи — это рейтинги, значения — соответствующие заголовки. По умолчанию null, что означает использование значения рейтинга в качестве заголовка.

Подробное описание методов

getClientOptions() метод

protected array getClientOptions()
{return} массив параметры javascript для рейтинга звёзд
Исходный код: framework/web/widgets/CStarRating.php#180 (показать)
protected function getClientOptions()
{
    
$options=array();
    if(
$this->resetText!==null)
        
$options['cancel']=$this->resetText;
    if(
$this->resetValue!==null)
        
$options['cancelValue']=$this->resetValue;
    if(
$this->allowEmpty===false)
        
$options['required']=true;
    if(
$this->starWidth!==null)
        
$options['starWidth']=$this->starWidth;
    if(
$this->readOnly===true)
        
$options['readOnly']=true;
    foreach(array(
'focus', 'blur', 'callback') as $event)
    {
        if(
$this->$event!==null)
        {
            if(
$this->$event instanceof CJavaScriptExpression)
                
$options[$event]=$this->$event;
            else
                
$options[$event]=new CJavaScriptExpression($this->$event);
        }
    }
    return 
$options;
}

registerClientScript() метод

public void registerClientScript(string $id)
$id строка идентификатор контейнера
Исходный код: framework/web/widgets/CStarRating.php#122 (показать)
public function registerClientScript($id)
{
    
$jsOptions=$this->getClientOptions();
    
$jsOptions=empty($jsOptions) ? '' : CJavaScript::encode($jsOptions);
    
$js="jQuery('#{$id} > input').rating({$jsOptions});";
    
$cs=Yii::app()->getClientScript();
    
$cs->registerCoreScript('rating');
    
$cs->registerScript('Yii.CStarRating#'.$id,$js);

    if(
$this->cssFile!==false)
        
self::registerCssFile($this->cssFile);
}

Регистрирует необходимые скрипты javascript и css.

registerCssFile() метод

public static void registerCssFile(string $url=NULL)
$url строка URL CSS. Если null, будет использован URL по умолчанию.
Исходный код: framework/web/widgets/CStarRating.php#139 (показать)
public static function registerCssFile($url=null)
{
    
$cs=Yii::app()->getClientScript();
    if(
$url===null)
        
$url=$cs->getCoreScriptUrl().'/rating/jquery.rating.css';
    
$cs->registerCssFile($url);
}

Регистрирует необходимый файл CSS.

renderStars() метод

protected void renderStars(string $id, string $name)
$id строка идентификатор контейнера
$name строка имя поля ввода
Исходный код: framework/web/widgets/CStarRating.php#152 (показать)
protected function renderStars($id,$name)
{
    
$inputCount=(int)(($this->maxRating-$this->minRating)/$this->ratingStepSize+1);
    
$starSplit=(int)($inputCount/$this->starCount);
    if(
$this->hasModel())
    {
        
$attr=$this->attribute;
        
CHtml::resolveName($this->model,$attr);
        
$selection=$this->model->$attr;
    }
    else
        
$selection=$this->value;
    
$options=$starSplit>1 ? array('class'=>"{split:{$starSplit}}") : array();
    for(
$value=$this->minRating, $i=0;$i<$inputCount; ++$i, $value+=$this->ratingStepSize)
    {
        
$options['id']=$id.'_'.$i;
        
$options['value']=$value;
        if(isset(
$this->titles[$value]))
            
$options['title']=$this->titles[$value];
        else
            unset(
$options['title']);
        echo 
CHtml::radioButton($name,!strcmp($value,$selection),$options) . "\n";
    }
}

Отображает звёзды.

run() метод

public void run()
Исходный код: framework/web/widgets/CStarRating.php#101 (показать)
public function run()
{
    list(
$name,$id)=$this->resolveNameID();
    if(isset(
$this->htmlOptions['id']))
        
$id=$this->htmlOptions['id'];
    else
        
$this->htmlOptions['id']=$id;
    if(isset(
$this->htmlOptions['name']))
        
$name=$this->htmlOptions['name'];

    
$this->registerClientScript($id);

    echo 
CHtml::openTag('span',$this->htmlOptions)."\n";
    
$this->renderStars($id,$name);
    echo 
"</span>";
}

Выполняет виджет. Этот метод регистрирует все необходимые клиентские скрипты и отображает текстовое поле.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CStarRating

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API