YII assets使用

为何用YII assetsphp

1.assets的做用是方便模块化,插件化的,通常来讲出于安全缘由不容许经过url访问protected下面的文件 ,可是咱们又但愿将module单独出来,因此须要使用发布,即将一个目录下的文件复制一份到assets下面方便经过url访问css

$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/assetsweb

 

下面以admin module为例安全

一、把须要用到的资源放在modules/admin/assets下。app

二、而后经过 CAssetManager,Yii::app()->assetManager可以自动的将私有资源publish到公共目录下 网站目录/assets模块化

三、Yii会自动在网站目录的/assets下建立一个随机不冲突的文件夹,如2b31b42b,并把你的modules/admin/assets目录下的文件拷贝过去。网站

经过以下代码得到,修改protected\modules\admin\AdminModule.php文件,this

 

<?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;  
    }  
}  

  

而后,在/protected/modules/admin/views/layouts/main.php中 使用$this->module->assetsUrl就能够调用你的css等文件了。url

 

<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);  
相关文章
相关标签/搜索