zoukankan      html  css  js  c++  java
  • YII 使用modules下的css,js,img

     用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
       这样模块代码中就实现了充分的独立性灵活性,使得代码可以灵活复用。

    <?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;
        } 
    
    }
  • 相关阅读:
    【小程序】订阅消息
    【小程序】轮播图
    【小程序】全局变量的设置、使用、修改、全局方法执行
    【RN】标题栏右边添加自定义按钮或加事件
    【RN】阴影react-native-shadow
    【vue】点击复制到剪贴板的方法( clipboard )
    Q-learning和Sarsa的区别
    Q-learning之一维世界的简单寻宝
    使用tensorflow时,关于GPU的设置
    安装Matlab出现弹出DVD1插入DVD2的提示怎么办?
  • 原文地址:https://www.cnblogs.com/freespider/p/3984807.html
Copyright © 2011-2022 走看看