Yii Framework v1.1.10 绫诲弬鑰

CStarRating

system.web.widgets
缁ф壙 class CStarRating » CInputWidget » CWidget » CBaseController » CComponent
婧愯嚜 1.0
鐗堟湰 $Id: CStarRating.php 3515 2011-12-28 12:29:24Z mdomba $
婧愮爜 framework/web/widgets/CStarRating.php
CStarRating鏄剧ず涓涓槦绾ц瘎浠锋帶浠舵潵鏀堕泦鐢ㄦ埛鐨勮瘎浠峰笺

CStarRating鐨勫熀纭鏄jQuery Star Rating Plugin. 瀹冪敤涓绯诲垪鐨勬槦鏄熸潵琛ㄧず璇勪环鐨勯珮浣庯紝 鐢ㄦ埛鍙互瑙﹀姩杩欎簺鏄熸槦 鏉ヨ緭鍏ヤ粬浠殑璇勪环銆傚綋璇勪环鍊艰鎻愪氦鏃讹紝杩斿洖鐨勫煎湪鏈嶅姟鍣ㄧ鍙 璞″叾浠栨櫘閫氱殑HTML杈撳叆鍏冪礌鐨勫间竴鏍疯浣跨敤銆 渚嬪锛屼娇鐢
$this->widget('CStarRating',array('name'=>'rating'));
鎴戜滑鍙互閫氳繃$_POST['rating']妫绱㈠埌璇勪环鐨勫笺

CStarRating鍏佽瀵瑰畠鐨勫瑙傝繘琛屽畾鍒讹紝涔熸敮鎸佺┖鐧借瘎浠峰拰鍙璇勪环銆

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
actionPrefix string actions鐨処D鐨勫墠缂銆 褰撳井浠跺湪CController::actions涓0鏄庝簡 鍔ㄤ綔鎻愪緵鑰咃紝鍙互涓哄叾鍔ㄤ綔鐨処D鎸囧畾鍓嶇紑浠ュ尯鍒 浜庡埆鐨勫井浠舵垨鎺у埗鍣ㄣ傚綋寰欢鐢ㄤ簬鎺у埗鍣 鐨勮鍥句腑鏃讹紝蹇呴』閰嶇疆鍚屾牱鐨勫墠缂銆 CWidget
allowEmpty boolean 璇勪环鍊兼槸鍚﹀彲浠ヤ负绌猴紙涓嶈缃)銆傞粯璁ゅ兼槸true銆 褰撴灞炴ц缃负true锛屽湪鏄熸槦鐨勫墠闈㈠皢鏄剧ず涓涓噸缃寜閽 CStarRating
attribute string the 涓庢灏忕墿浠剁浉鍏宠仈鐨勫睘鎬с 杩欎釜鍚嶅瓧鍙互鍖呭惈鏂规嫭鍙 (e. CInputWidget
blur string 鏄熸槦澶卞幓鐒︾偣鏃惰Е鍙戠殑鍥炶皟鍑芥暟銆 CStarRating
callback string 鏄熸槦琚偣鍑绘椂瑙﹀彂鐨勫洖璋冨嚱鏁般 CStarRating
controller CController 杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ CWidget
cssFile mixed 姝ゅ井浠朵娇鐢ㄧ殑CSS鏂囦欢銆傞粯璁ゅ兼槸null锛岃〃绀 浣跨敤涓庢寰欢鎹嗙粦鐨勯粯璁SS鏂囦欢銆 濡傛灉璁剧疆涓篺alse锛屽皢涓嶄娇鐢–SS鏂囦欢銆傚叾浠栨儏鍐典笅锛屽綋浣跨敤姝ゅ井浠 鏃舵寚瀹氱殑CSS鏂囦欢灏嗚浣跨敤銆 CStarRating
focus string 鏄熸槦鑾峰緱鐒︾偣鏃惰Е鍙戠殑鍥炶皟鍑芥暟銆 CStarRating
htmlOptions array 娓叉煋杈撳叆鏍囩鏃堕檮鍔犵殑HTML閫夐」 CInputWidget
id string 杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪 CWidget
maxRating mixed 鍏佽鐨勬渶楂樿瘎浠峰笺傚彲浠ユ槸鏁存暟鎴栨诞鐐规暟锛岄粯璁ゅ兼槸10銆 CStarRating
minRating mixed 鍏佽鐨勬渶浣庤瘎浠峰笺傚彲浠ユ槸鏁存暟鎴栨诞鐐规暟锛岄粯璁ゅ兼槸1銆 CStarRating
model CModel 涓庢灏忕墿浠剁浉鍏宠仈鐨勬暟鎹ā鍨嬨 CInputWidget
name string 杈撳叆鎺т欢鐨勫悕瀛椼傚鏋model娌℃湁璁剧疆锛屽垯蹇呴』璁剧疆姝ゅ睘鎬с CInputWidget
owner CBaseController 杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫 CWidget
ratingStepSize mixed 璇勪环鐨勫垎宸傝繖鏄袱棰楁槦涔嬪墠鐨勬渶灏忓垎宸紝榛樿鍊兼槸1銆 CStarRating
readOnly boolean 璇勪环鍊兼槸鍚﹀彧璇汇傞粯璁ゅ兼槸false銆 濡傛灉姝ゅ睘鎬ц缃负true锛岃瘎浠锋帶浠跺皢涓嶅彲鏀瑰姩銆 CStarRating
resetText string 閲嶇疆鎸夐挳鐨勬彁绀烘枃鏈傞粯璁ゅ兼槸null锛岃〃绀轰娇鐢ㄧ郴缁熼瀹氫箟鐨勬枃鏈紙"Cancel Rating"锛夈 CStarRating
resetValue string 鏄熺骇璇勪环鎺т欢琚竻绌烘椂琚缃殑鍊笺傞粯璁ゅ兼槸null锛岃〃绀轰娇鐢ㄧ郴缁熼瀹氫箟鐨勫硷紙""锛夈 CStarRating
skin mixed 寰欢浣跨敤鐨勭毊鑲ょ殑鍚嶇О銆傞粯璁や负鈥渄efault鈥濄 濡傛灉姝ゅ睘鎬ц缃负false锛屽井浠跺皢涓嶄細鏈夌毊鑲よ浣跨敤銆 CWidget
starCount integer 鏄熸槦鐨勬暟閲忋傞粯璁ゅ兼槸5銆 CStarRating
starWidth integer 鏄熸槦鍥炬爣鐨勫搴︺傞粯璁ゅ兼槸null锛岃〃绀轰娇鐢ㄧ郴缁熷畾涔夌殑鍊硷紙16锛夈 CStarRating
titles array 涓庤瘎浠烽夐」鐩稿叧鑱旂殑鏍囬銆傞敭鏄瘎浠烽夐」锛屽兼槸璇勪环鐨勬爣棰樸 榛樿鍊兼槸null锛岃〃绀轰娇鐢ㄨ瘎浠峰间綔涓烘爣棰樸 CStarRating
value string 杈撳叆鎺т欢鐨勫 CInputWidget
viewPath string 杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 CWidget

鍙椾繚鎶ゅ睘鎬

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
clientOptions array 鏄熺骇璇勪环鎺т欢鐨凧avaScript閫夐」 CStarRating

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__construct() 鏋勯犲櫒銆 CWidget
__get() 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 CComponent
__isset() 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 CComponent
__set() 璁剧疆涓涓粍浠剁殑灞炴у笺 CComponent
__unset() 璁剧疆涓涓粍浠剁殑灞炴т负null銆 CComponent
actions() 杩斿洖姝idget浣跨敤鐨勫姩浣滅殑鍒楄〃銆 CWidget
asa() 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° CComponent
attachBehavior() 闄勫姞涓涓涓哄埌缁勪欢銆 CComponent
attachBehaviors() 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 CComponent
attachEventHandler() 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 CComponent
beginCache() Begins fragment caching. CBaseController
beginClip() Begins recording a clip. CBaseController
beginContent() Begins the rendering of content that is to be decorated by the specified view. CBaseController
beginWidget() Creates a widget and executes it. CBaseController
canGetProperty() 纭畾灞炴ф槸鍚﹀彲璇汇 CComponent
canSetProperty() 纭畾灞炴ф槸鍚﹀彲鍐欍 CComponent
createWidget() Creates a widget and initializes it. CBaseController
detachBehavior() 浠庣粍浠朵腑鍒嗙涓涓涓恒 CComponent
detachBehaviors() 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 CComponent
detachEventHandler() 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 CComponent
disableBehavior() 绂佺敤涓涓檮鍔犺涓恒 CComponent
disableBehaviors() 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
enableBehavior() 鍚敤涓涓檮鍔犺涓恒 CComponent
enableBehaviors() 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
endCache() Ends fragment caching. CBaseController
endClip() Ends recording a clip. CBaseController
endContent() Ends the rendering of content. CBaseController
endWidget() Ends the execution of the named widget. CBaseController
evaluateExpression() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getController() 杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ CWidget
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
getId() 杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪 CWidget
getOwner() 杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫 CWidget
getViewFile() 鏍规嵁瑙嗗浘鍚嶆煡鎵捐鍥炬枃浠躲 CWidget
getViewPath() 杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 CWidget
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
init() 鍒濆鍖栨寰欢銆 CWidget
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent
registerClientScript() 娉ㄥ唽蹇呴』鐨凧avaScript鍜孋SS鑴氭湰銆 CStarRating
registerCssFile() 娉ㄥ唽蹇呴』鐨凜SS鏂囦欢銆 CStarRating
render() 娓叉煋涓涓鍥俱 CWidget
renderFile() Renders a view file. CBaseController
renderInternal() Renders a view file. CBaseController
run() 杩愯姝ゅ井浠躲 CStarRating
setId() 璁剧疆姝ゅ井浠剁殑ID銆 CWidget
widget() Creates a widget and executes it. CBaseController

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
getClientOptions() 杩斿洖鏄熺骇璇勪环鎺т欢鐨凧avaScript閫夐」 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()

鏄熺骇璇勪环鎺т欢鐨凧avaScript閫夐」

cssFile 灞炴
public mixed $cssFile;

姝ゅ井浠朵娇鐢ㄧ殑CSS鏂囦欢銆傞粯璁ゅ兼槸null锛岃〃绀 浣跨敤涓庢寰欢鎹嗙粦鐨勯粯璁SS鏂囦欢銆 濡傛灉璁剧疆涓篺alse锛屽皢涓嶄娇鐢–SS鏂囦欢銆傚叾浠栨儏鍐典笅锛屽綋浣跨敤姝ゅ井浠 鏃舵寚瀹氱殑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锛岃〃绀轰娇鐢ㄧ郴缁熼瀹氫箟鐨勬枃鏈紙"Cancel Rating"锛夈

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} array 鏄熺骇璇勪环鎺т欢鐨凧avaScript閫夐」
婧愮爜锛 framework/web/widgets/CStarRating.php#181 (鏄剧ず)
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;
    if(
$this->focus!==null)
    {
        if(
strncmp($this->focus,'js:',3))
            
$options['focus']='js:'.$this->focus;
        else
            
$options['focus']=$this->focus;
    }
    if(
$this->blur!==null)
    {
        if(
strncmp($this->blur,'js:',3))
            
$options['blur']='js:'.$this->blur;
        else
            
$options['blur']=$this->blur;
    }
    if(
$this->callback!==null)
    {
        if(
strncmp($this->callback,'js:',3))
            
$options['callback']='js:'.$this->callback;
        else
            
$options['callback']=$this->callback;
    }
    return 
$options;
}

registerClientScript() 鏂规硶
public void registerClientScript(string $id)
$id string 瀹瑰櫒鐨処D銆
婧愮爜锛 framework/web/widgets/CStarRating.php#123 (鏄剧ず)
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);
}

娉ㄥ唽蹇呴』鐨凧avaScript鍜孋SS鑴氭湰銆

registerCssFile() 鏂规硶
public static void registerCssFile(string $url=NULL)
$url string CSS鏂囦欢鐨刄RL銆傚鏋滄鍊间负null锛屽皢浣跨敤涓涓粯璁ょ殑CSS鏂囦欢鐨刄RL銆
婧愮爜锛 framework/web/widgets/CStarRating.php#140 (鏄剧ず)
public static function registerCssFile($url=null)
{
    
$cs=Yii::app()->getClientScript();
    if(
$url===null)
        
$url=$cs->getCoreScriptUrl().'/rating/jquery.rating.css';
    
$cs->registerCssFile($url);
}

娉ㄥ唽蹇呴』鐨凜SS鏂囦欢銆

renderStars() 鏂规硶
protected void renderStars(string $id, string $name)
$id string HTML瀹瑰櫒鐨処D
$name string 杈撳叆鎺т欢鐨勫悕瀛
婧愮爜锛 framework/web/widgets/CStarRating.php#153 (鏄剧ず)
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>? 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#102 (鏄剧ず)
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>";
}

杩愯姝ゅ井浠躲 姝ゆ柟娉曟敞鍐屾墍鏈夊繀椤荤殑瀹㈡埛绔剼鏈劧鍚庢覆鏌 鍑鸿緭鍏ュ煙銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.