首頁 >php框架 >YII >yii怎麼引用assets?

yii怎麼引用assets?

coldplay.xixi
coldplay.xixi原創
2020-07-16 10:22:332877瀏覽

yii引用assets的方法:首先將需要用到的資源放在【modules/admin/assets】下;然後將私有資源publish到公用目錄下;接著在網站目錄的【/assets】下建立一個隨機不衝突的資料夾;最後複製檔案即可。

yii怎麼引用assets?

yii引用assets的方法:

為什麼用YII assets

1.assets的作用是方便模組化,插件化的,一般來說出於安全原因不允許通過url訪問protected下面的文件,但是我們又希望將module單獨出來,所以需要使用發布,即將一個目錄下的檔案複製一份到assets下面方便透過url存取

$assets = Yii::getPathOfAlias('ext').'/css'; 
//$baseUrl = Yii::app()->getAssetManager()->publish($assets); 
$baseUrl = Yii::app()->assetManager->publish($assets);  //extensions/css发布到assets的创建一个随机不冲突的文件夹下 
Yii::app()->clientScript->registerCssFile($baseUrl.'/main.css');//引用assets下面的main.css

 

#2.如果一個模組需要新增使用資源,直接從webroot中引用新增即可。

但試圖建立一個模組能夠在任何地方引用,且資源獨立並能夠避免命名衝突 。

你如何保證你的檔案名稱不會與一些零散的應用程式的嘗試使用相同名稱的檔案衝突,對於js,images,css也一樣。

透過CAssetManager,Yii::app()->assetManager能夠自動的將私有資源publish到公用目錄下webroot/assets

 相關學習推薦:yii教學

下面以admin module為例

#1、把需要用到的資源放在modules/admin/assets下。

2、然後透過CAssetManager,Yii::app()->assetManager能夠自動的將私有資源publish到公用目錄下,網站目錄/assets

3、Yii會自動在網站目錄的/assets下創建一個隨機不衝突的資料夾,如2b31b42b,並把你的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(&#39;application.modules.admin.assets&#39;)); 
        return $this->_assetsUrl; 
    } 
   
    public function setAssetsUrl($value) 
    { 
        $this->_assetsUrl=$value; 
    } 
}

然後,在/protected/modules/admin/views/layouts/ main.php中使用$this->module->assetsUrl就可以呼叫你的css等檔案了。

<link rel="stylesheet" type="text/css" href="<?php echo $this->module->assetsUrl; ?>/css/screen.css"/>

使用前強制更新asset

 $baseJsUrl = Yii::app()->getAssetManager()->publish($baseJsPath, false, -1, YII_DEBUG);

以上是yii怎麼引用assets?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn