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常量就好了,在生产环境时强制复制资源文件,在线上环境不强制复制。

yii框架widget和注册asset的例子的更多相关文章

  1. YII框架源码分析(百度PHP大牛创作-原版-无广告无水印)

           YII 框架源码分析    百度联盟事业部——黄银锋 目 录 1. 引言 3 1.1.Yii 简介 3 1.2.本文内容与结构 3 2.组件化与模块化 4 2.1.框架加载和运行流程 4 ...

  2. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  3. Yii框架-Smarty-整合

    一.搭建yii框架 一.首先你得下个YII框架的源码 :下载地址:http://www.yiiframework.com/download/ 二.把下载到的源码解压放到一个PHP可访问的位置:如我的 ...

  4. Yii框架tips(转)

    yii的一些小的技巧 http://www.yiichina.com/topic/151 db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何 ...

  5. Yii框架tips

    db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何在页面下边显示sql的查询时间在log组件的routes中加入 array('class' ...

  6. YII框架路由和URL生成

    路由和URL生成 当一个YII应用开始处理一个请求的时候,它首先要做的便是将请求的URL转化成一个路由.路由的作用是用于后续实例化相应的控制器和操作,以便处理请求,整个处理过程便叫做路由.路由的逆过程 ...

  7. YII框架的使用

    YII框架的使用 spit: 吐痰,吐口水, 过去式: spat spat: 本身也可以作为一个单词, 意思是: "小打小闹""小的吵闹""小争吵&q ...

  8. 使用Yii框架完整搭建网站流程入门

    下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(eas ...

  9. 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server

    原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...

随机推荐

  1. 新浪微博Python3客户端接口OAuth2

    Keyword: Python3 Oauth2 新浪微博 本接口基于廖雪峰的weibo python SDK修改完成,其sdk为新浪官方所推荐,原作者是用python2写的 经过一些修改,这里提供基于 ...

  2. struts1和struts2安全线

    Servlet的生命周期是"初始化->init->service->destroy->卸载". 这里大家都知道,我们在web.xml里面定义一个servle ...

  3. Android手势识别的发展

    在播放器.与手势识别.所以,看看今天的我们Android手势识别. 首先,我们需要站在巨人的肩膀上.有些人举了个例子和说明. 第一章: http://www.2cto.com/kf/201110/10 ...

  4. TestNg依靠先进的采用强制的依赖,并依赖序列的------TestNg依赖于特定的解释(两)

    原创文章,版权所有所有,转载,归因:http://blog.csdn.net/wanghantong TestNg使用dependsOnGroups属性来进行依赖測试, 測试方法依赖于某个或某些方法, ...

  5. 简历上的哪些内容才是 HR 眼中的干货?

    资源业绩能力知识自评 https://www.zhihu.com/question/39722495/answer/199846861

  6. 线程操纵UI问题

    WPF只允许UI线程修改UI,其他线程必须通过Invoke.委托(安全性)Winform可以开启/关闭“只允许UI线程修改UI” 在WPF中非UI线程修改UI的方法 非UI线程直接修改UI,会报错 S ...

  7. 【msdn wpf forum翻译】TextBlock等类型的默认样式(implicit style)为何有时不起作用?

    原文:[msdn wpf forum翻译]TextBlock等类型的默认样式(implicit style)为何有时不起作用? 原文链接:http://social.msdn.microsoft.co ...

  8. SVG路径动画解密

    原文:SVG路径动画解密 原文链接:http://www.gbtags.com/gb/share/5581.htm SVG路径动画效果现在貌似越来越多网站都使用了,给我的感觉就像是一段时间的流行而已, ...

  9. Window Features 总览

    This overview discusses features of windows such as window types, states, size, and position. Window ...

  10. Win8 Metro(C#)数字图像处理--4图像颜色空间描述

    原文:Win8 Metro(C#)数字图像处理--4图像颜色空间描述  图像颜色空间是图像颜色集合的数学表示,本小节将针对几种常见颜色空间做个简单介绍. /// <summary> / ...