Zend Framework 结合Fckeditor 编辑器
这个教程主要的功能是介绍如果在Zend Framework 里运用Fckeditor做为后台文章发布的 编辑器..我会分为二个部分来说明..第一个就是不运用Smarty如何配置Fckeditor编辑器.
第二个就是运用Smarty作为网站开发的模板..
OK!下面就开始说明了.
第一种: 用Zend Framework 开发.但是不需用要用到模板的情况: 我在这里先贴一张网站目录图片..
做为讲解图片.这样我想会更详细一些...开发网站目录如下图片所示:
[attach]217[/attach]
如大家所见...我是把结合Fckeditor写成一个Zend Framework 插件形式..这样就可以让整个站点调用到FCK...
这样无论是前台和后台都行.
OK!最重要的一点就出来了.我把Fckeditor里面的[color=#ff0000]fckeditor_php5.php[/color]这个文件写成如下插件形式:
名称就如我网站目录用红包线划出来的为Fckeditor.php 它的代码大致辞如下:
[b]<?php[/b]
[color=#808080][i]/** * Zend_Controller_Plugin_Abstract */[/i][/color]
[color=#b1b100]require_once[/color] [color=#ff0000]'Zend/Controller/Plugin/Abstract.php'[/color];
[b]class[/b] Custom_Controller_Plugin_Fckeditor [b]extends[/b] Zend_Controller_Plugin_Abstract
[color=#66cc66]{[/color]
[b]public[/b] [color=#00ff00]$InstanceName[/color] ;
[b]public[/b] [color=#00ff00]$BasePath[/color] ;
[b]public[/b] [color=#00ff00]$Width[/color] ;
[b]public[/b] [color=#00ff00]$Height[/color] ;
[b]public[/b] [color=#00ff00]$ToolbarSet[/color] ;
[b]public[/b] [color=#00ff00]$Value[/color] ;
[b]public[/b] [color=#00ff00]$Config[/color] ;
[b]public[/b] [b]function[/b] __construct[color=#66cc66]([/color] [color=#00ff00]$instanceName[/color] [color=#66cc66])[/color]
[color=#66cc66]{[/color]
[color=#00ff00]$this[/color]->[color=#066000]InstanceName[/color] = [color=#00ff00]$instanceName[/color] ;
[color=#00ff00]$this[/color]->[color=#066000]BasePath[/color] = [color=#ff0000]'/fckeditor/'[/color] ;
[color=#00ff00]$this[/color]->[color=#066000]Width[/color] = [color=#ff0000]'100%'[/color] ;
[color=#00ff00]$this[/color]->[color=#066000]Height[/color] = [color=#ff0000]'200'[/color] ;
[color=#00ff00]$this[/color]->[color=#066000]ToolbarSet[/color] = [color=#ff0000]'Default'[/color] ;
[color=#00ff00]$this[/color]->[color=#066000]Value[/color] = [color=#ff0000]''[/color] ;
[color=#00ff00]$this[/color]->[color=#066000]Config[/color] = [url=http://www.php.net/array][color=#006600]array[/color][/url][color=#66cc66]([/color][color=#66cc66])[/color] ;
[color=#66cc66]}[/color]
[b]public[/b] [b]function[/b] Create[color=#66cc66]([/color][color=#66cc66])[/color]
[color=#66cc66]{[/color]
[url=http://www.php.net/echo][color=#006600]echo[/color][/url] [color=#00ff00]$this[/color]->[color=#066000]CreateHtml[/color][color=#66cc66]([/color][color=#66cc66])[/color] ;
[color=#66cc66]}[/color]
[color=#808080][i]//.......[/i][/color]
[color=#66cc66]}[/color]
[color=#808080][i]//后面的代码是和FCK里[/i][/color][color=#ff0000]fckeditor_php5.php[/color][color=#808080][i]文件一样的...篇幅关系这里省略下面的...[/i][/color]
[b]?>[/b]
上面把[color=#ff0000]fckeditor_php5.php[/color],文件改写了..接下来要做的就是在controller控制器里学会运用这个插件.
.比如说我有一个关于日志的控制器:代码如下所示([color=#00ff00]ArticleController.php[/color]):
[b]<?php[/b]
[color=#ff0000]class ArticleController [b]extends[/b] Zend_Controller_Action
[color=#66cc66]{[/color][/color]
[b]public[/b] [b]function[/b] init[color=#66cc66]([/color][color=#66cc66])[/color]
[color=#66cc66]{[/color]
[color=#00ff00]$this[/color]->[color=#066000]view[/color]->[color=#066000]baseUrl[/color] = [color=#00ff00]$this[/color]->_request->[color=#066000]getBaseUrl[/color][color=#66cc66]([/color][color=#66cc66])[/color];
[color=#66cc66]}[/color]
[b]public[/b] [b]function[/b] indexAction [color=#66cc66]([/color][color=#66cc66])[/color]
[color=#66cc66]{[/color]
[color=#808080][i]//调用下面FCK的方法. $this->fckAction('在这里编写您的日志!');[/i][/color]
[url=http://www.php.net/echo][color=#006600]echo[/color][/url] [color=#00ff00]$this[/color]->[color=#066000]view[/color]->[color=#066000]render[/color][color=#66cc66]([/color][color=#ff0000]'FCK.phtml'[/color][color=#66cc66])[/color]; [color=#808080][i]//显示示FCK编辑器的模板[/i][/color]
[color=#66cc66]}[/color]
[color=#808080][i]/*这里就是把FCK调用写成一个方法.这样在这个控制器内只要调用这个方法就可以*/[/i][/color]
[b]public[/b] [b]function[/b] fckAction[color=#66cc66]([/color][color=#00ff00]$content[/color]=[color=#ff0000]''[/color][color=#66cc66])[/color]
[color=#66cc66]{[/color]
[color=#808080][i]//加载FCK类[/i][/color]
Zend_Loader::[color=#066000]loadClass[/color][color=#66cc66]([/color][color=#ff0000]'Custom_Controller_Plugin_Fckeditor'[/color][color=#66cc66])[/color];
[color=#808080][i]//实例化这个类[/i][/color]
[color=#00ff00]$oFCKeditor[/color] = [b]new[/b] Custom_Controller_Plugin_Fckeditor[color=#66cc66]([/color][color=#ff0000]'FCKcontent'[/color][color=#66cc66])[/color] ;
[color=#808080][i]//这里是您放置FCK文件的路径.您要根据您自己的作改动啊..[/i][/color]
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]BasePath[/color] = WEB_ROOT.[color=#ff0000]"public/scripts/fckeditor/"[/color];
[color=#808080][i]//FCK皮肤 [/i][/color]
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Config[/color][color=#66cc66][[/color][color=#ff0000]'SkinPath'[/color][color=#66cc66]][/color] =
WEB_ROOT.[color=#ff0000]'public/scripts/fckeditor/editor/skins/silver/'[/color] ;
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Width[/color] = [color=#ff0000]'100%'[/color];
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Height[/color] = [color=#ff0000]'300'[/color];
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Value[/color] = [color=#00ff00]$content[/color];
[color=#00ff00]$this[/color]->[color=#066000]view[/color]->[color=#066000]fckeditor[/color] = [color=#00ff00]$oFCKeditor[/color];
[color=#66cc66]}[/color]
[color=#66cc66]}[/color]
[b]?>[/b]
这样在我们的FCK.phtml文件里只要这样写就可以:
[color=#0bbdd0][color=#0bbdd0]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" [/color]
[color=#0bbdd0]"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">[/color]
[color=#099000][url=http://december.com/html/4/element/html.html][b]<html[/b][/url] xmlns=[color=#ff0000]"http://www.w3.org/1999/xhtml"[/color][b]>[/b][/color]
[color=#099000][url=http://december.com/html/4/element/head.html][b]<head>[/b][/url][/color]
[color=#099000][url=http://december.com/html/4/element/meta.html][b]<meta[/b][/url] [color=#006600]http-equiv[/color]=[color=#ff0000]"Content-Type"[/color] [color=#006600]content[/color]=[color=#ff0000]"text/html; charset=utf-8"[/color] /[b]>[/b][/color]
[color=#099000][url=http://december.com/html/4/element/title.html][b]<title>[/b][/url][/color]FCK使用实例[color=#099000][b]</title>[/b][/color]
[color=#099000][b]</head>[/b][/color]
[color=#099000][url=http://december.com/html/4/element/body.html][b]<body>[/b][/url][/color]
[color=#099000][b]<[/b]? $this-[b]>[/b][/color]fckeditor->Create();?>
[color=#099000][color=#808080][i]<!-- 您就在这里调用FCK!-->[/i][/color][/color]
[color=#099000][b]</body>[/b][/color]
[color=#099000][b]</html>[/b][/color]
[/color]到了这里...我们就完成了..第一个问题: 就是不运用Smarty如何配置Fckeditor编辑器...现在我们要解决第二种方法:就是如何运用Smarty作为网站开发的模板..配置Fckeditor编辑器??
其实是大同小异...在你的([color=#00ff00]ArticleController.php[/color]):文件里..代码如下所示:
[b]<?php[/b]
[b]class[/b] ArticleController [b]extends[/b] Zend_Controller_Action
[color=#66cc66]{[/color]
[b]public[/b] [b]function[/b] init[color=#66cc66]([/color][color=#66cc66])[/color]
[color=#66cc66]{[/color]
[color=#00ff00]$this[/color]->[color=#066000]view[/color]->[color=#066000]baseUrl[/color] = [color=#00ff00]$this[/color]->_request->[color=#066000]getBaseUrl[/color][color=#66cc66]([/color][color=#66cc66])[/color];
[color=#66cc66]}[/color]
[b]public[/b] [b]function[/b] indexAction[color=#66cc66]([/color][color=#66cc66])[/color]
[color=#66cc66]{[/color] [color=#808080][i]//调用下面FCK的方法.[/i][/color]
[color=#00ff00]$this[/color]->[color=#066000]fckAction[/color][color=#66cc66]([/color][color=#ff0000]'在这里编写您的日志!'[/color][color=#66cc66])[/color];
[color=#808080][i]//显示FCK编辑器的模板[/i][/color]
[color=#00ff00]$this[/color]->[color=#066000]smarty[/color]->[color=#066000]display[/color][color=#66cc66]([/color][color=#ff0000]'FCK.phtml'[/color][color=#66cc66])[/color];
[color=#66cc66]}[/color]
[color=#808080][i]/*这里就是把FCK调用写成一个方法.这样在这个控制器内只要调用这个方法就可以*/[/i][/color]
[b]public[/b] [b]function[/b] fckAction[color=#66cc66]([/color][color=#00ff00]$content[/color]=[color=#ff0000]''[/color][color=#66cc66])[/color]
[color=#66cc66] {[/color]
[color=#808080][i]//加载FCK类[/i][/color]
Zend_Loader::[color=#066000]loadClass[/color][color=#66cc66]([/color][color=#ff0000]'Custom_Controller_Plugin_Fckeditor'[/color][color=#66cc66])[/color];
[color=#808080][i]//实例化这个类[/i][/color]
[color=#00ff00]$oFCKeditor[/color] = [b]new[/b] Custom_Controller_Plugin_Fckeditor[color=#66cc66]([/color][color=#ff0000]'FCKcontent'[/color][color=#66cc66])[/color] ;
[color=#808080][i]//这里是您放置FCK文件的路径.您要根据您自己的作改动啊..[/i][/color]
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]BasePath[/color] = WEB_ROOT.[color=#ff0000]"public/scripts/fckeditor/"[/color];
[color=#808080][i]//FCK皮肤[/i][/color]
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Config[/color][color=#66cc66][[/color][color=#ff0000]'SkinPath'[/color][color=#66cc66]][/color] =
WEB_ROOT.[color=#ff0000]'public/scripts/fckeditor/editor/skins/silver/'[/color] ;
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Width[/color] = [color=#ff0000]'100%'[/color];
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Height[/color] = [color=#ff0000]'300'[/color];
[color=#00ff00]$oFCKeditor[/color]->[color=#066000]Value[/color] = [color=#00ff00]$content[/color];
[color=#808080][i]//注意:唯一就是这里不同[/i][/color]
[color=#00ff00]$this[/color]->[color=#066000]smarty[/color]->[color=#066000]assign[/color][color=#66cc66]([/color][color=#ff0000]"oFCKeditor"[/color],[color=#00ff00]$oFCKeditor[/color][color=#66cc66])[/color];
[color=#66cc66]}[/color]
[color=#66cc66]}[/color]
[b]?>[/b]
现在我们要在运用了Smarty模板里使用FCK编辑器..就可以这样:[color=#0bbdd0][color=#0bbdd0]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" [/color]
[color=#0bbdd0] "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">[/color]
[color=#099000][url=http://december.com/html/4/element/html.html][b]<html[/b][/url] xmlns=[color=#ff0000]"http://www.w3.org/1999/xhtml"[/color][b]>[/b][/color]
[color=#099000][url=http://december.com/html/4/element/head.html][b]<head>[/b][/url][/color]
[color=#099000][url=http://december.com/html/4/element/meta.html][b]<meta[/b][/url] [color=#006600]http-equiv[/color]=[color=#ff0000]"Content-Type"[/color] [color=#006600]content[/color]=[color=#ff0000]"text/html; charset=utf-8"[/color] /[b]>[/b][/color]
[color=#099000][url=http://december.com/html/4/element/title.html][b]<title>[/b][/url][/color]FCK使用实例[color=#099000][b]</title>[/b][/color]
[color=#099000][b]</head>[/b][/color]
[color=#099000][url=http://december.com/html/4/element/body.html][b]<body>[/b][/url][/color]
[color=#099000][b]<[/b][color=#66cc66]{[/color]$oFCKeditor-[b]>[/b][/color]create()}>
[color=#099000][color=#808080][i]<!-- 您就在这里调用FCK! 我这里Smarty是用了<{}>[/i][/color] [/color]作分隔符.
您可能会和我的不一样..把这个换成你自己的就可以用了 -->
[color=#099000][b]</body>[/b][/color]
[color=#099000][b]</html>[/b][/color]
[/color]OK!这样你就可以在任何时候使用FCKeditor这个编辑器了...只要你自己按这个教程来写..不过可能有比我更
好的方法..我这里只是一种....因为刚学Zend Framework .所以有很多不太会的东西...有的时候可能是错误的...希望大家可以批评指正...
最后给大写一张..我这个博客的图:看看..我运用FCK的效果..呵呵...
效果图片:
[attach]218[/attach]
上面这图片就是我自己的博客FCK编辑器.好了就写到这里. Fatal error: Call to a member function Create() on a non-object in C:\wamp\www\feck\application\default\views\scripts\fcke.phtml on line 9
出现这个错误
public function __construct( $instanceName )
{
$this->InstanceName = $instanceName ;
$this->BasePath = '/fckeditor/' ;
$this->Width = '100%' ;
$this->Height = '200' ;
$this->ToolbarSet = 'Default' ;
$this->Value = '' ;
$this->Config = array() ;
}
/**
* Display FCKeditor.
*
*/
public function Create()
{
echo $this->CreateHtml() ;
}
控制器是这样的
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action
{
public function init()
{
$this->view->baseUrl = $this->_request->getBaseUrl();
}
/**
* The default action - show the home page
*/
public function indexAction()
{
// TODO Auto-generated IndexController::indexAction() action
echo $this->view->render('fcke.phtml');
}
public function fckAction($content='')
{
//加载FCK类
Zend_Loader::loadClass('Custom_Controller_Plugin_Fckeditor');
//实例化这个类
$oFCKeditor = new Custom_Controller_Plugin_Fckeditor('FCKcontent') ;
//这里是您放置FCK文件的路径.您要根据您自己的作改动啊..
$oFCKeditor->BasePath = WEB_ROOT."html/scripts/";
//FCK皮肤
$oFCKeditor->Config['SkinPath'] =
WEB_ROOT.'html/scripts/fckeditor/editor/skins/silver/' ;
$oFCKeditor->Width = '100%';
$oFCKeditor->Height = '300';
$oFCKeditor->Value = $content;
$this->view->fckeditor = $oFCKeditor;
}
}
[[i] 本帖最后由 杨飞云 于 2008-10-23 11:08 编辑 [/i]] 看看是那里出了错啊!!!!!!!!!???????????
页:
[1]
