你现在的位置:首页 > PHP网站建设知识库 > Yii > 正文

yii框架如何把css、js、image发布到assets中

研究了一下怎么加css、js,网上的好多资料都是在框架根目录下的第一层有css、js文件夹,大家觉得不利于协同开发时各人自扫门前雪的特质,想在各自的module下维护一套,没想到的是,这样的情况下registerCssFile等函数失效了,大概意思是protected下边的东西不允许访问,当然了,我也不太明白为什么,也不确定是否是我哪里没设置对。但是本着解决问题的精神,发现assets是个好东东。我们可以使用如下代码自由加载css等到asset文件夹下,可以选择单个文件、某个文件夹下的所有子文件夹等方式进行加载,而且这种加载方式可以避免重复加载,节省资源。

$cs=Yii::app()->clientScript;  
$cssDir=Yii::getPathOfAlias("access.css") ;  
$published = Yii::app()->assetManager->publish($cssDir);  
    $cssFile = $published . "/" . "homemain.css";  
    if (!Yii::app()->clientScript->isCssFileRegistered($cssFile)) {  
       Yii::app()->clientScript->registerCssFile($cssFile);  
    } ?>  

上面用到的assetmanager是/web/CAssetManager.php中描述的,其中publish函数有如下参数:$path:css等文件的位置,$hashByName是否对在assets文件夹下生成的资源文件夹进行哈希,$level加载方式(单文件、文件夹全加载神马的),$forceCopy是否强制每次都重新加载(个人认为css调试的时候用比较好,否则修改过的css可能因为不重新加载而不能立即生效)。综上所述,很简单的,js、image同理。

//在底部加载自定义JS  
Yii::app()->clientScript->registerScriptFile("xxx",CClientScript::POS_END);