YII 使用modules下的css,js,img
2014-09-21 17:55
176 查看
用YII assets
1.assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问
1 首先把自己开发模块用到的 css 或者 js 等客户端脚本,放到 modules/自己模块名/assets 目录中
比如:modules/admin/assets
2 在自己的代码中用下面的代码 发布这些 客户端代码到公共 assets 目录
Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.admin.assets'));
这个publish 方法 返回一个绝对路径,指向刚刚发布到外部 assets的目录。
另注意:publish 方法不会重复发布内容。参考 publish方法的$forceCopy=false 参数
3 然后再模块里就可以用 使用$this->module->assetsUrl就可以调用你的css等文件了。
注意:$this->module 是 ccontroller 的属性,代表当前控制器所属的 module。上面例子中就是 admin
这样模块代码中就实现了充分的独立性灵活性,使得代码可以灵活复用。
1.assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问
1 首先把自己开发模块用到的 css 或者 js 等客户端脚本,放到 modules/自己模块名/assets 目录中
比如:modules/admin/assets
2 在自己的代码中用下面的代码 发布这些 客户端代码到公共 assets 目录
Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.admin.assets'));
这个publish 方法 返回一个绝对路径,指向刚刚发布到外部 assets的目录。
另注意:publish 方法不会重复发布内容。参考 publish方法的$forceCopy=false 参数
3 然后再模块里就可以用 使用$this->module->assetsUrl就可以调用你的css等文件了。
注意:$this->module 是 ccontroller 的属性,代表当前控制器所属的 module。上面例子中就是 admin
这样模块代码中就实现了充分的独立性灵活性,使得代码可以灵活复用。
<?php /** * Admin module class */ class StatisticsModule extends CWebModule { /** * Default admin theme */ public $theme = 'default'; private $_assetsUrl; public function init() { // Yii::app()->theme = 'admin/' . $this->theme; // Set theme url // Yii::app()->themeManager->setBaseUrl( Yii::app()->theme->baseUrl ); // Yii::app()->themeManager->setBasePath( Yii::app()->theme->basePath ); // Set error handler //Yii::app()->errorHandler->errorAction = 'admin/error/error'; /* Make sure we run the master module init function */ // Yii::app()->getAssetManager()->publish($baseJsPath, false, -1, YII_DEBUG); //使用前强制更新asset parent::init(); } public function getAssetsUrl() { if($this->_assetsUrl===null) $this->_assetsUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.modules.statistics.assets')); return $this->_assetsUrl; } public function setAssetsUrl($value) { $this->_assetsUrl=$value; } }
相关文章推荐
- YII 如何在当前页面外部加载css,img,js文件
- yii框架如何引入css、img、js文件
- 在Django框架下使用静态文件(css/js/img等)
- yii 链接地址的格式以及如何引用外部js,css,img
- 使用gulp对js、css、img进行合并压缩
- Python如何提取CSS/JS/IMG的名称,Pytorch如何使用split
- 怎么避免浏览器缓存静态文件(js/css/img)
- 使用Form验证,未登录时登录页面无法显示图片、css、js文件的解决方法
- 使用css+js构造的无限级菜单(寻梦的稻草人)
- 页面加入_JS,CSS使用,#include添加文件,缓存页面,页面间传递汉字,IsPostBack控制页面的加载,自定义错语页面
- asp.net在使用母版页的内容页面中动态加载css和js文件的方法
- jquery imgareaselect 使用利用js与程序结合实现图片剪切
- jquery imgareaselect 使用利用js与程序结合实现图片剪切
- 使用JS+CSS实现tab功能
- 自制批处理使用Yui Compressor压缩并打包js或css文件
- 静态页面生成技术中,把css,js,以及内容中的img标签放在同一个目录下
- 使用css和js实现Tab选项卡
- 使用css+js构造的无限级菜单(寻梦的稻草人)
- VS2005如果使用Forms驗證,Login頁面不能引用工程中CSS和IMG文件解決方案
- 使用js操作css属性的写法