yii框架widget和注册asset的例子


yii框架是一个基于组件的框架,这样代码的重用性就非常的高,如我们想在网站的多个地方调用编辑器,这样我们就可以自定义一个组件,来供我们调用使用

下面以Ueditor组件为例:

1、下载ueditor到protected下面的extensions下面

2、在改目录下建立UeditorWidget.php

<?php
class UeditorWidget extends CWidget {
    public $id = 'ueditor';
    public $name = 'content';
    public $width = '100%';
    public $height = '400px';
    public $jsFiles = array(
        '/ueditor.config.js',
        '/ueditor.all.min.js',
    );


    public function run() {
        $path = Yii::app()->assetManager->publish(dirname(__FILE__));
        foreach($this->jsFiles as $v) {
            Yii::app()->getClientScript()->registerScriptFile($path.$v);
        }
        $this->render('ueditor');
    }


}

注意:所有的组件都要继承CWidget这个类

3、每个组件都有自己的视图

<script id="<?php echo $this->id;?>" type="text/plain" style="width:<?php echo $this->width;?>;height:<?php echo $this->height;?>;"></script>

<script>
    var ue = UE.getEditor('<?php echo $this->id;?>');
</script>

4、在视图中调用

<?php
        $this->widget('ext.ueditor.UeditorWidget',array(
            'id'=>'eidtor',
            'width'=>'100%',
            'height'=>'400px',
        ));
  ?>

说明:这个只是一个非常简单的配置,因为ueditor这个还有很多的参数,我这只是调用了一个界面出来。可以参见ueditor手册。

一般在自定义组件的时候,经常要将js,css注册到资源中。所以这个注册时非常重要;

public function run() {
        //publish这个是将改文件目录都给注册到资源文件目录中
        $path = Yii::app()->assetManager->publish(dirname(__FILE__));
        foreach($this->jsFiles as $v) {
            //这个是将所需的文件,注册到页面中
            Yii::app()->getClientScript()->registerScriptFile($path.$v);
        }
        $this->render('ueditor');
    }

虽然yii的资源管理很方便,但是在注册资源多了以后也可能会发生效率低下的问题,基本上原因在于每次调用assetManagerpublish方法时都强制将文件拷贝到资源文件夹下了。 当然,开发的时候,这样比较方便,改动了js、css文件能马上看出效果,但是在线上环境时就加大了服务器的负担。 要解决这个问题只要将CAssetManager类里的publish方法的第四个参数$forceCopy设置为YII_DEBUG常量就好了,在生产环境时强制复制资源文件,在线上环境不强制复制。

优质内容筛选与推荐>>
1、强连通分量【k 算法、t 算法】
2、初识数据库
3、vim hehe
4、Android_Component_example
5、P3327 [SDOI2015]约数个数和


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn