ZendChina | Zend中文权威资讯's Archiver

ZendChina 发表于 2008-10-10 08:24

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编辑器.好了就写到这里.

杨飞云 发表于 2008-10-23 11:02

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]]

杨飞云 发表于 2008-10-23 11:07

看看是那里出了错啊!!!!!!!!!???????????

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.