[ZendFramework教程>>原创作品]

教您怎样在ZendFramework里,把Fckeditor整合成一个Zend_Form元素

  • 时间:2009年06月04日 08:11:01
  • 浏览量:3640
  • 评论量:0
  • 作者:Kylingood

在我们做站的时候,通常在我们的网站管理后台都会涉及到一个后台文章编辑器的问题。通常来说,我们都会一个开源的的文本编辑器来做为文章发布的工具。在我来看,PHPer们用到Fckeditor这个编辑器还是比较多的。可能是此编辑器功能相对别的编辑器来说更强大吧。现在我就写一篇关于如何把整合到ZendFramework里面,让它成为我们Zend_From里的一个类似于文本框等表单元素,
现在我的思路如下:
第一:把Fckeditor文件夹里面的fckeditor_php5.php这个文件内的FCKeditor类改写成一个ZendFramework的View helper的插件方式。
我把写命名为Custom_View_Helper_Fckeditor其基本代码形式如下:

<?php
require_once	'Zend/Controller/Plugin/Abstract.php';
class Custom_View_Helper_Fckeditor extends Zend_Controller_Plugin_Abstract
{	/* 	 * Name of the FCKeditor instance. 
* * @access protected * @var string */
public $InstanceName ; /** * Path to FCKeditor relative to the document root.
* * @var string */ public $BasePath ; .....

这个文件不需要我多写,你只要把fckeditor_php5.php里的FCKeditor类粘贴过来这里就可以。唯一需要注意的就是你在Fckeditor路径可能需要改成你自己的。

 

第二:再写一个调用上面Custom_View_Helper_Fckeditor这助手类的View Helper。我在这里把它命名为:
Custom_View_Helper_FormFCK,这个文件的全部代码如下:

<?php
class Custom_View_Helper_FormFCK extends Zend_View_Helper_FormElement
{
 
    public function formFCK($name, $value = null, $attribs = null)
    {
        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable
		$toolbar = 'Default';
       	$width = '100%';
       	$height = '300';
        if(isset($attribs['width']))$width = $attribs['width'];
        if(isset($attribs['height']))$height = $attribs['height'];
        if(isset($attribs['toolbar']))$toolbar = $attribs['toolbar'];
        $oFck = new  Custom_View_Helper_Fckeditor($this->view->
escape($name),$value,$width,$height,$toolbar); //注意这里调用了上面的那个View Helper   return $oFck->CreateHtml(); //返回Fck编辑器 } }

第三:接着我们就可以在Zend_Form_Element这个类上来扩展(我在这里只是这样叫,也不知道对与不对,意思就是把我们FCK整到Zend_Form里,可以和Zend_Form_Element_Text一样用)它。我们扩展的方式我是继承Zend_Form_Element_Xhtml这个虚拟类。
代码很简单,如下几句:

<?php
class Custom_Element_Fck extends Zend_Form_Element_Xhtml
{
    /**      * Use formTextarea view helper by default      * @var string      */
    public $helper = 'formFCK';//注意了,这个是名称是我们上面第二步写的那个View Helper类名
}

第四:也是最后一步,我们上面所做的工作完了了。你只要在写Form的时候这样写就OK!示例代码如下:

<?php
$prod_info = new Custom_Element_Fck('prod_info'); //Fck取值的名称               
$prod_info->setLabel('商品简介')
       ->setAttribs(array('size'=>'60','height'=>'400'))//宽度,和高度
       ->setValue('哈哈在这里可以写你的FCK初始值') 
       ->setDecorators($Decorators)
       ->setRequired(true)
       ->addValidator('NotEmpty', true,  array(
         'messages' => array(
          'isEmpty' => '请填写商品简介!')));

就如上面4步就可以完完全全把Fckeditor这个文本编辑器好好的整到ZendFramework里,成为一个类似于Zend_Form_Element_Select
,Zend_Form_Element_Text这样的通用元素,只要你喜欢,在用Form的里,需要FCK。就可以实例化Custom_Element_Fck它。你就可以很OK的搞定。。不需要再去写太多的东西。
   总结:我看了一下,基实可以把第二步和第三步结合起来写。不要写成二个View Helper可能会更容易明白。也不会多出一个Helper.上面的方法也是我和同事在2月份一起学习的结果。直到现在我才有时间去整理这文章。希望可以帮助到更多PHPer.当然可能有朋友会有更好的解决方式,如果可能期待你的交流~~~

 

原创文章如转载,请注明:转载OOPHP开源博客 [ http://www.oophp.cn/article/view/id/356 ]

上一篇:[转]Magento开源网店系统特点及于... 下一篇:在此公司一年的多的工作时间结束了!终于可...

: Baidu搜藏 QQ书签 Google书签 Del.icio.us POCO网摘 Yahoo书签 新浪ViVi 365Key网摘 天极网摘 和讯网摘 Windows Live 提交新发现,Dig it

用户推荐文章
相关文章
网友评论
发表评论

会员的头像

: 请选个帅照吧!
:  *  尊姓大名大名(2-30字).
:  *  来了就多说几句吧(4-250字)
:  *  没办法,只为防机器人@_@