kindeditor整合进yii框架

2014-02-18  来源:本站原创  分类:yii  人气:5 

/**
* kindeditor
* 源文件 : www/js/kindeditor/
* 功能 : 富文本编辑器,优于ckeditor,支持多种显示插入代码的样式。
* 形式 : 现以components的方式整合到yii中(修改自其自带的php demo)
* 目录 : www/protected/componts/editor/ (整合进yii后的基础目录)
* www/protected/componts/editor.php (接口文件)
* www/js/kindeditor/ (源文件路径)
* www/protected/controllers/EditoruploadController.php (处理文件的调用地址)
* 案例 : www/protected/views/post/_form.php

*/

首先根据kindeditor的demo中的例子,将kindeditor添加到表单中:

<div class="row">
        <?php echo $form->labelEx($model, 'content'); ?>
        <?php echo CHtml::activeTextArea($model, 'content', array('id'=>'editor_id')); ?>
        <?php echo $form->error($model, 'content'); ?>
    </div>
    <script src='<?php echo Yii::app()->baseUrl; ?>/js/kindeditor/kindeditor.js'></script>
    <script charset="utf-8" src="<?php echo Yii::app()->baseUrl; ?>/js/kindeditor/lang/zh_CN.js"></script>
    <script>
        KindEditor.ready(function(K) {
            var editor1 = K.create('#editor_id', {    //editor是替换的对象
        resizeType : 2,
        urlType: 'domain',
        shadowMode : false,
                height : '600px',
                cssPath : '<?php echo Yii::app()->baseUrl; ?>/css/main.css',    //编辑界面中的样式
                uploadJson : '<?php echo Yii::app()->createUrl("editorupload/uploadJson"); ?>',    //上传文件的处理地址
                fileManagerJson : '<?php echo Yii::app()->createUrl("editorupload/fileManageJson"); ?>',    //管理上传文件的地址
                allowFileManager : true,    //允许浏览上传的文件
                afterCreate : function() {
                    var self = this;
                    K.ctrl(document, 13, function() {
                        self.sync();
                        K('#eform')[0].submit();
                    });
                    K.ctrl(self.edit.doc, 13, function() {
                        self.sync();
                        K('#eform')[0].submit();
                    });
                },
        afterChange : function() {
            this.sync();
        }
            });
        });
    </script>

至此,表单中已经可以看到kindeditor的编辑框了 ,提交一段内容后确实是有样式;

大功告成?_?;No!No!不要认为这样就可以了, ,真正要做的才刚刚开始:

最主要的是实现上传文件的功能 和 代码高亮显示(上一篇文章已经讲解过了)。

下一步要做的就是实现上传文件的功能。

可以看到上面的代码中的uploadJson/fileManagerJson的参数已经换成yii的url,这里就要创建这两个action了。

demo中的file_manager_json.php和upload_json.php这两个文件正好对应两个action。JSON.php这个文件是基础文件。

首先将这两个文件改造成类文件,复制到www/protected/components/editor文件夹里面,还有JSON.php,并作如下修改:

require_once 'JSON.php';

class fileManagerjson {

    public $php_path = '';
    public $php_url = '';

    public function __construct($php_path, $php_url) {
        $this->php_path = $php_path;
        $this->php_url = $php_url;
    }

    public function fileManager() {
        $php_path = $this->php_path;
        $php_url = $this->php_url;

//根目录路径,可以指定绝对路径,比如 /var/www/attached/
        $root_path = $php_path . '/../attached/';
//根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
        $root_url = $php_url . '/attached/';
require_once 'JSON.php';

class uploadJson{

    public $php_path = '';
    public $php_url = '';

    public function __construct($php_path, $php_url) {
        $this->php_path = $php_path;
        $this->php_url = $php_url;
    }

public function upJson(){
        $php_path = $this->php_path;
        $php_url = $this->php_url;

//根目录路径,可以指定绝对路径,比如 /var/www/attached/
        $save_path = $php_path . '/../attached/';
//根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
        $save_url = $php_url . '/attached/';

这里只贴出了头部的改造,别处的修改就是把别的函数定义成public function ,调用的地方相应的functionName()改成$this->functionName() ,注意不要漏掉哦。

可以看到上面的类中,都添加了构造函数,这是为了把文件目录传递给这个类。

这里只是把demo中的文件改造好了,然后就是调用了。

在components中新建一个文件Editor.php,代码如下

require_once 'editor/JSON.php';
require_once 'editor/file_manager_json.php';
require_once 'editor/upload_json.php';

class Editor {

    public static function fileManageJson() {
        $php_path = Yii::app()->basePath;
        $php_url = Yii::app()->baseUrl;
        $fileManager = new fileManagerjson($php_path, $php_url);
        $fileManager->fileManager();
    }

    public static function uploadJson() {
        $php_path = Yii::app()->basePath;
        $php_url = Yii::app()->baseUrl;
        $fileManager = new uploadJson($php_path, $php_url);
        $fileManager->upJson();
    }

}

到这里,知道后面该怎么做了吧,那就是在action里面调用这两个方法就可以了。

在controllers里面新建文件EditoruploadController.php,对应action的代码如下:

public function actionFileManageJson() {
        Editor::fileManageJson();
    }

    public function actionUploadJson() {
        Editor::uploadJson();
    }

好了,现在可以测试一下上传文件的功能了,发现会报错。根据错误信息找到是JSON.php里面的class_exists('pear')这个方法报错,奇怪了,我没有用pear啊,既然没有用这个,所以试一下把这个注释掉,再回到页面中添加文章,发现上传文件没有问题, ,没仔细看里面的代码,所以注释这里的代码应该不是最好的解决方法,等有空再研究一下。

贴图:

kindeditor整合进yii框架

相关文章
  • kindeditor整合进yii框架 2014-02-18

    /** * kindeditor * 源文件 : www/js/kindeditor/ * 功能 : 富文本编辑器,优于ckeditor,支持多种显示插入代码的样式. * 形式 : 现以components的方式整合到yii中(修改自其自带的php demo) * 目录 : www/protected/componts/editor/ (整合进yii后的基础目录) * www/protected/componts/editor.php (接口文件) * www/js/kindeditor/ (源

  • 解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍 2014-02-25

    本篇文章是对PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的方法进行了详细的分析介绍,需要的朋友参考下 excel的写入与生成操作: include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/Writer/Excel5.php'; 用于输出.xls的 include 'PHPExcel/IOFactory.php';//phpexcel工厂类 //创建一个exc

  • yii框架分类树扩展示例 2013-10-14

    这篇文章主要介绍了yii框架分类树扩展示例,提供两种方式的分类树格式,表格和下拉框形式的树形结构,需要的朋友可以参考下 提供两种方式的分类树格式,表格和下拉框形式的树形结构 可以自定义表格和下拉框的样式,自定义以哪一列的参数为格式化数据,自定义层级关系参数,自定义表格列名称,也可以设置时间的格式化. 调用方式 表格方式: <?php $this->widget('ext.tree.widgets.TreeWidget',array( 'dataProvider' => $dataProv

  • Yii框架调试心得--在页面输出执行sql语句 2013-12-31

    这篇文章主要介绍了Yii框架调试心得--在页面输出执行sql语句,需要的朋友可以参考下 我们使用:yiidebugtb来调试(因为用他界面比较美观,不影响界面其他元素). 1.下载yiidebugtb,并且放入到 application.extensions.yiidebugtb 目录 2.修改main.php,加入如下代码: 'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( array( 'class'=>'CFileLo

  • Yii框架关联查询with用法分析 2014-01-13

    这篇文章主要介绍了Yii框架关联查询with用法,以实例形式较为详细的分析了yii支持的四种类型关系的具体用法,是使用yii框架进行关联查询时非常实用的技巧,需要的朋友可以参考下 本文实例分析了Yii框架关联查询with用法.分享给大家供大家参考.具体方法如下: Yii框架关联查询与mysql中的关联查询会有什么区别呢?这里小编就与各位来一起来看看吧. Yii的关联查询确实是一个方便的东西,网上的资料也很多,但是大部分都是Ctrl+c,Ctrl+v,有些东西一直没有人出来详细的写篇文章说明一下,

  • Yii框架中 find findAll 查找出制定的字段的方法对比 2014-01-19

    在yii框架中可以使用映射类的find方法取出一条数据或者用findall方法取出数条数据来,那么如何按照所需条件来取数据呢,主要用到了CDbCriteria这个类,这个类是yii自带的操作数据库的支持类 众所周知 modelName::model() -> find() //找出的是一个对象 modelName::model() -> findALL() //找出的是一个对象集合的数组 如何找出我所需要的字段的数据,而不是全部字段的数据 之前我是这么做的 $criteria = new CD

  • 在Yii框架中使用PHP模板引擎Twig的例子 2014-02-15

    这篇文章主要介绍了在Yii框架中使用PHP模板引擎Twig的例子,Twig是一款简洁的PHP模板引擎,在此小编也介绍一下,需要的朋友可以参考下 Twig是一款快速.安全.灵活的PHP模板引擎,它内置了许多filter和tags,并且支持模板继承,能让你用最简洁的代码来描述你的模板.他的语法和Python下的模板引擎Jinjia以及Django的模板语法都非常像. 比如我们在PHP中需要输出变量并且将其进行转义时,语法比较累赘: <?php echo $var ?> <?php echo

  • yii框架表单模型使用及以数组形式提交表单数据示例 2014-04-15

    这篇文章主要介绍了yii框架表单模型使用及以数组形式提交表单数据示例,需要的朋友可以参考下 按Yii文档里的描述,Yii在处理表单的一般过程是: 创建表单对应的模型类,设置字段验证规则 创建表单提交对应的action,处理提交的内容 在视图中创建表单form 在刚刚的一个小项目里,想使用ajax提交表单信息并验证保存,又不想用隐藏iframe来做无刷新提交,并且action中能够用到模型类的校验方法,就想到使用表单数组提交的方式,举个例子: form代码: <form action='' met

  • yii框架配置默认controller和action示例 2014-05-15

    这篇文章主要介绍了yii框架配置默认controller和action示例,需要的朋友可以参考下 设置默认controller 在/protected/config/main.php添加配置 <?php return array( 'name'=>'Auto', 'defaultController'=>'auto', 上述配置了默认的controller为AutoController.php 设置默认action 在AutoController.php中设置 复制代码 代码如下: cl

  • ajax翻页效果模仿yii框架自己写的 2014-05-20

    这篇文章主要介绍了自己写的ajax翻页效果,模仿yii框架,需要的朋友可以参考下 <!DOCTYPE html> <html> <head> <title>ajax分页</title> <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> <script> function loadXMLDoc($url) {

  • Yii框架form表单用法实例 2014-06-12

    这篇文章主要介绍了Yii框架form表单用法,实例分析了Yii中form表单的实现方法与相关技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了Yii框架form表单用法.分享给大家供大家参考.具体方法如下: 使用表单 在 Yii 中处理表单时,通常需要以下步骤: 1. 创建用于表现所要收集数据字段的模型类. 2. 创建一个控制器动作,响应表单提交. 3. 在视图脚本中创建与控制器动作相关的表单. 一.创建模型 在编写表单所需的 HTML 代码之前,我们应该先确定来自最终用户输入的数据的

  • Yii框架在页面输出执行sql语句以方便调试的实现方法 2014-06-30

    这篇文章主要介绍了Yii框架在页面输出执行sql语句以方便调试的实现方法,涉及yiidebugtb的使用,是比较实用的技巧,需要的朋友可以参考下 本文实例讲述了Yii框架在页面输出执行sql语句以方便调试的实现方法.分享给大家供大家参考.具体分析如下: 我们使用:yiidebugtb来调试(因为用他界面比较美观,不影响界面其他元素). 1.下载yiidebugtb,并且放入到 application.extensions.yiidebugtb 目录 2.修改main.php,加入如下代码: 'l

  • yii框架中的Url生产问题小结 2014-07-31

    yii框架中的Url生产问题小结,需要的朋友可以参考下. <?php echo CHtml::link('错误链接','user/register')?> <?php echo CHtml::link('正确链接',array('user/register'))?> 假定设定了UrlManager的配置为Path模式,用yii默认的配置: 复制代码 代码如下: 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>a

  • yii框架通过控制台命令创建定时任务示例 2014-08-04

    这篇文章主要介绍了yii框架通过控制台命令创建定时任务示例,需要的朋友可以参考下 假设Yii项目路径为 /home/apps/ 1. 创建文件 /home/apps/protected/commands/crons.php <?php $yii = '/home/apps/framework/yii.php'; require_once($yii); $configFile = dirname(__FILE__).'/../config/console.php'; Yii::createCons

  • Yii框架中memcache用法实例 2014-08-11

    这篇文章主要介绍了Yii框架中memcache用法,以实例形式分析了在Yii框架中加入memcache的具体操作方法,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了Yii框架中memcache用法.分享给大家供大家参考.具体分析如下: 在现在的公司用的是YII的框架,接触到的东西也比较多,可以学到的东西也比较多,在以前的公司没有接触过memcache,只是听过,但是从来没有真正用过.现在终于有机会使用一下了,就以我做的项目为例吧! 我做的项目是一个手机排行榜,但是排行榜每隔15分钟刷新一

  • PHP 基于Yii框架中使用smarty模板的方法详解 2014-08-15

    本篇文章是对在Yii框架中使用smarty模板的方法进行了详细的分析介绍,需要的朋友参考下 第一种方法按照YII系统的办法生成视图觉得有点麻烦,觉得用smarty更省事.尝试着把smarty模板加进来了. date_default_timezone_set("PRC"); class PlaceController extends CController { protected $_smarty; function __construct(){ parent::__construct(

  • Yii框架登录流程分析 2014-08-23

    这篇文章主要介绍了Yii框架登录流程,详细的分析了Yii框架的原理与登录的详细流程,有助于深入了解Yii框架的原理,需要的朋友可以参考下 本文详细分析了Yii框架的登录流程.分享给大家供大家参考.具体分析如下: Yii对于新手来说上手有点难度,特别是关于session,cookie和用户验证.现在我们就Yii中登录流程,来讲讲Yii开发中如何设置session,cookie和用户验证方面的一些通用知识 1. 概述 Yii是一个全栈式的MVC框架,所谓全栈式指的是Yii框架本身实现了web开发中所

  • yii框架builder.update.delete使用方法 2014-11-18

    这篇文章主要介绍了yii框架builder.update.delete使用方法,需要的朋友可以参考下 Yii自带的query builder还是很好用的,省去了拼sql的过程,今天在写一个语句的时候遇到这样一个问题 $connection = Yii::app()->db; $command = $connection->createCommand(); $operate_rst = 0; if(!empty($_POST['lid'])){ $operate_rst = $command-&

  • yii框架源码分析之创建controller代码 2014-11-22

    我们可以看到有时会使用protected目录下的controller,有时会使用module中controller,具体是如何处理的呢,请看如下的分析 使用yii框架的url路径一般形如hostname/?r=xxxx/xxxx/xxxx&sdfs=dsfdsf 我们可以看到有时会使用protected目录下的controller,有时会使用module中controller,具体是如何处理的呢,请看如下的分析: 以下代码摘自yii框架核心代码%Yiiroot%/framework/web/CW

  • Yii框架获取当前controlle和action对应id的方法 2015-01-08

    这篇文章主要介绍了Yii框架获取当前controlle和action对应id的方法,可实现获取当前controlle或action对应id的功能,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了Yii框架获取当前controlle和action对应id的方法.分享给大家供大家参考.具体方法如下: 在Yiii框架开发中,你可能会要获取当前controlle或action的id,其实很简单,一句代码就实现了,以下是分别在controlle(控制器)和View(视图)中获取当前id的代码. 在控