CViewRenderer
鍖 | system.web.renderers |
---|---|
缁ф壙 | abstract class CViewRenderer » CApplicationComponent » CComponent |
瀹炵幇 | IApplicationComponent, IViewRenderer |
瀛愮被 | CPradoViewRenderer |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CViewRenderer.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/web/renderers/CViewRenderer.php |
CViewRenderer 鏄鍥炬覆鏌撶被鐨勫熀绫汇
涓涓鍥炬槸涓涓簲鐢ㄧ▼搴忕粍浠讹紝 瀹冩覆鏌撶敤鑷畾涔夎娉曞啓鐨勮鍥俱
涓鏃﹀畨瑁呬竴涓悕涓簐iewRenderer鐨勮鍥炬覆鏌撶粍浠讹紝 姝e父鐨勮鍥炬覆鏌撹繃绋嬪皢浼氳鎵撴柇銆 娓叉煋鍣ㄥ皢棣栧厛瑙f瀽婧愯鍥炬枃浠 鐒跺悗娓叉煋瑙嗗浘鏂囦欢銆
瑙f瀽缁撴灉琚繚瀛樹负涓存椂鏂囦欢 瀹冨彲鑳藉瓨鍌ㄥ湪runtime鐩綍鎴栧拰婧愯鍥炬枃浠剁浉鍚岀殑鐩綍銆
涓涓鍥炬槸涓涓簲鐢ㄧ▼搴忕粍浠讹紝 瀹冩覆鏌撶敤鑷畾涔夎娉曞啓鐨勮鍥俱
涓鏃﹀畨瑁呬竴涓悕涓簐iewRenderer鐨勮鍥炬覆鏌撶粍浠讹紝 姝e父鐨勮鍥炬覆鏌撹繃绋嬪皢浼氳鎵撴柇銆 娓叉煋鍣ㄥ皢棣栧厛瑙f瀽婧愯鍥炬枃浠 鐒跺悗娓叉煋瑙嗗浘鏂囦欢銆
瑙f瀽缁撴灉琚繚瀛樹负涓存椂鏂囦欢 瀹冨彲鑳藉瓨鍌ㄥ湪runtime鐩綍鎴栧拰婧愯鍥炬枃浠剁浉鍚岀殑鐩綍銆
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
behaviors | array | 杩欎釜搴旂敤缁勪欢闄勫姞鐨勮涓恒 杩欐琛屼负灏嗗湪搴旂敤缁勪欢璋冪敤init鏃堕檮鍔犲湪搴旂敤缁勪欢涓娿 璇峰弬鐓CModel::behaviors濡備綍鎸囧畾姝ゅ睘鎬у笺 | CApplicationComponent |
fileExtension | string | 瑙嗗浘鏂囦欢鐨勬墿灞曞悕. | CViewRenderer |
filePermission | integer | 瑙f瀽鍚庣敓鎴愮殑涓存椂鐩綍鍜屼复鏃舵枃浠剁殑鏉冮檺銆 榛樿涓0755 (owner rwx, group rx and others rx). | CViewRenderer |
isInitialized | boolean | 妫鏌ュ簲鐢ㄧ粍浠舵槸鍚﹀凡缁忓垵濮嬪寲銆 | CApplicationComponent |
useRuntimePath | boolean | 鏄惁灏嗚В鏋愮殑缁撴灉淇濆瓨鍦ㄥ簲鐢ㄧ▼搴忕殑runtime鐩綍銆 榛樿涓簍rue銆 濡傛灉璁剧疆涓篺alse锛岃В鏋愮粨鏋滃皢浠ユ枃浠跺舰寮忎繚瀛樺湪鍜屾簮瑙嗗浘鏂囦欢鐩稿悓鐨勭洰褰曚笅 鏂囦欢鍚嶅皢浼氭槸婧愯鍥炬枃浠跺悕鍔犱笂瀛楁瘝c銆 | CViewRenderer |
鍏叡鏂规硶
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
generateViewFile() | 瑙f瀽婧愯鍥炬枃浠讹紝淇濆瓨缁撴灉鍒板彟涓涓枃浠躲 | CViewRenderer |
getViewFile() | 鐢熸垚缁撴灉瑙嗗浘鏂囦欢鐨勮矾寰勩 | CViewRenderer |
灞炴ц缁
fileExtension
灞炴
public string $fileExtension;
瑙嗗浘鏂囦欢鐨勬墿灞曞悕. 榛樿涓'.php'.
filePermission
灞炴
public integer $filePermission;
瑙f瀽鍚庣敓鎴愮殑涓存椂鐩綍鍜屼复鏃舵枃浠剁殑鏉冮檺銆 榛樿涓0755 (owner rwx, group rx and others rx).
useRuntimePath
灞炴
public boolean $useRuntimePath;
鏄惁灏嗚В鏋愮殑缁撴灉淇濆瓨鍦ㄥ簲鐢ㄧ▼搴忕殑runtime鐩綍銆 榛樿涓簍rue銆 濡傛灉璁剧疆涓篺alse锛岃В鏋愮粨鏋滃皢浠ユ枃浠跺舰寮忎繚瀛樺湪鍜屾簮瑙嗗浘鏂囦欢鐩稿悓鐨勭洰褰曚笅 鏂囦欢鍚嶅皢浼氭槸婧愯鍥炬枃浠跺悕鍔犱笂瀛楁瘝c銆
鏂规硶璇︾粏
generateViewFile()
鏂规硶
abstract protected void generateViewFile(string $sourceFile, string $viewFile)
| ||
$sourceFile | string | 婧愯鍥炬枃浠惰矾寰 |
$viewFile | string | 浣滀负缁撴灉鐨勮鍥炬枃浠惰矾寰 |
婧愮爜锛 framework/web/renderers/CViewRenderer.php#55 (鏄剧ず)
abstract protected function generateViewFile($sourceFile,$viewFile);
瑙f瀽婧愯鍥炬枃浠讹紝淇濆瓨缁撴灉鍒板彟涓涓枃浠躲
getViewFile()
鏂规硶
protected string getViewFile(string $file)
| ||
$file | string | 婧愯鍥炬枃浠惰矾寰 |
{return} | string | 缁撴灉瑙嗗浘鏂囦欢璺緞 |
婧愮爜锛 framework/web/renderers/CViewRenderer.php#84 (鏄剧ず)
protected function getViewFile($file)
{
if($this->useRuntimePath)
{
$crc=sprintf('%x', crc32(get_class($this).Yii::getVersion().dirname($file)));
$viewFile=Yii::app()->getRuntimePath().DIRECTORY_SEPARATOR.'views'.DIRECTORY_SEPARATOR.$crc.DIRECTORY_SEPARATOR.basename($file);
if(!is_file($viewFile))
@mkdir(dirname($viewFile),$this->filePermission,true);
return $viewFile;
}
else
return $file.'c';
}
鐢熸垚缁撴灉瑙嗗浘鏂囦欢鐨勮矾寰勩
renderFile()
鏂规硶
public mixed renderFile(CBaseController $context, string $sourceFile, mixed $data, boolean $return)
| ||
$context | CBaseController | 娓叉煋瑙嗗浘鏂囦欢controller鎴杦idget銆 |
$sourceFile | string | 瑙嗗浘鏂囦欢璺緞 |
$data | mixed | 瑕佷紶鍒拌鍥句腑鐨勬暟鎹 |
$return | boolean | 鏄惁灏嗘覆鏌撶粨鏋滆繑鍥 |
{return} | mixed | 杩斿洖娓叉煋缁撴灉锛屾垨鑰呭綋涓嶉渶瑕佹覆鏌撶粨鏋滄椂杩斿洖null銆 |
婧愮爜锛 framework/web/renderers/CViewRenderer.php#66 (鏄剧ず)
public function renderFile($context,$sourceFile,$data,$return)
{
if(!is_file($sourceFile) || ($file=realpath($sourceFile))===false)
throw new CException(Yii::t('yii','View file "{file}" does not exist.',array('{file}'=>$sourceFile)));
$viewFile=$this->getViewFile($sourceFile);
if(@filemtime($sourceFile)>@filemtime($viewFile))
{
$this->generateViewFile($sourceFile,$viewFile);
@chmod($viewFile,$this->filePermission);
}
return $context->renderInternal($viewFile,$data,$return);
}
娓叉煋涓涓鍥炬枃浠躲 杩欎釜鏂规硶鏄 IViewRenderer 鎵蹇呴』鐨勩