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;
        } 
    
    }
  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/freespider/p/3984807.html
Copyright © 2011-2022 走看看