assets的作用是將模塊的一些私有文件(如CSS,javascript,image等)發布到一個web能訪問到的目錄下,讓用戶可以通過url進行訪問,又保持模塊的整體的獨立。
假設網站有模塊admin
module,需要用到的資源放在modules/admin/assets中,為了能夠訪問,現在把私有資源publish到公共目錄下
網站目錄/assets。Yii
framework會自動在網站目錄的/assets下創建一個隨機不沖突的文件夾,並把modules/admin/assets目錄下的文件拷貝過去。
具體實現修改protected\modules\admin\AdminModule.php文件
<?php
class AdminModule extends CWebModule
{
private $_assetsUrl;
public function getAssetsUrl()
{
if($this->_assetsUrl===null)
$this->_assetsUrl = Yii::app() -> getAssetManager() -> publish( Yii::getPathOfAlias( 'application.modules.admin.assets' ));
return $this->_assetsUrl;
}
public function setAssetsUrl($value)
{
$this->_assetsUrl=$value;
}
}
在layout或視圖中使用$this->module->assetsUrl得到其位置地址,如要得到css文件時
<link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/style.css"/>
在開發時,為了得到實時的效果,需要強制更新assets,將publish方法的第四個參數設為true即可
Yii::app()->getAssetManager()->publish($assetPath, false, -1, true);
詳細請自行查閱手冊關於CAssetManager類及其方法的說明介紹