CStarRating
| Пакет | system.web.widgets |
|---|---|
| Наследование | class CStarRating » CInputWidget » CWidget » CBaseController » CComponent |
| С момента | 1.0 |
| Исходный код | framework/web/widgets/CStarRating.php |
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 для рейтинга звёзд |
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 | строка | идентификатор контейнера |
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 по умолчанию. |
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 | строка | имя поля ввода |
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() |
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