如何为Zend Dojo表单元素编辑器加载额外的插件?

时间:2011-11-22 11:55:24

标签: zend-form dojo zend-framework

我有简单的Zend_Dojo_Form和Editor元素,当我添加aditional插件时,我从firebug得到通知

Cannot find plugin linkdialog

代码

class Some_Form extends Zend_Dojo_Form
{
    public function init() {
        $this->addElement('Editor', 'content', array(
            'label'=> 'Some editor title',

            'dijitParams' => array(
                'extraPlugins'=>array('linkdialog')
             ),
        );
    }
 }

如何为Zend_Dojo_Form_Element_Editor启用aditional插件?我试图包括manualy,但结果相同。

dojo.require("dijit._editor.plugins.LinkDialog");

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

谢谢@Alan Kay,你让我走上了正确的道路,但要详细说明一点。

似乎有两类Dojo编辑器插件,“(内置)插件”和“ extraPlugins ”。

以下是built-in plugins的列表(不确定它是否是最新的)。您可以在Dojo启用的Zend Forms Elements上添加内置插件:

$this->addElement('editor', 'summary', array(
    'label'              => 'Summary:',
    'plugins'            => array(
        // NOTE: specifying any will lose the default builtin plugins, 
        // so need to re-add the ones you want.
        // Builtin plugins
        'bold', 'italic', 'underline', '|',
        'insertOrderedList', 'insertUnorderedList', '|',
        'indent', 'outdent', '|',
        'justifyLeft', 'justifyRight', 'justifyCenter', 'justifyFull', '|',
        // dijit._editor.plugins that work
        'foreColor', 'hiliteColor', '|',            // TextColor
        'fontName', 'fontSize', 'formatBlock', '|', // FontChoice
        'createLink', 'insertImage', '|',           // LinkDialog
        'viewSource',                               // ViewSource
    )
));

或者,有两个主要的extraPlugins库,Dijit(http://dojotoolkit.org/reference-guide/dijit/_editor/plugins.html#dijit-editor-plugins)和Dojox(http:// dojotoolkit。组织/参考导/ DojoX中/编辑/ plugins.html#DojoX中的编辑器-插件)。不幸的是,'extraPlugins'在Zend Framework中不可用,直到下一个次要版本(1.12)ZF-11511。您可以使用该补丁创建自己的库以在此期间扩展Zend_Dojo_Form_Element_Editor。

注意,在指定'extraPlugins'时,您要使用'短名称'(例如'createLink'),而不是'资源'(例如'linkdialog'):

  

“粗体文本代表资源;基本文本代表资源   “短名称”将被添加到extraPlugins列表中。“'使用插件'(http://dojotoolkit.org/documentation/tutorials/1.6/editor/)<< em>

但是,请注意,在上面的示例中,可以包含某些 Dijit extraPlugin'资源'的“短名称”,但据我所知,不包括Dojox。不确定为什么这样(没有看过dojo src - 有人吗?)。试试你的运气。

答案 1 :(得分:0)

我不知道这是否适用于您的确切语法,但您不想设置'LinkDialog',您想要'createLink'。我猜'extraPlugins'=>array('createLink')是你需要的改变

我知道以下内容适用于我:

$this->addElement(new Zend_Dojo_Form_Element_Editor('content',
    array(
        'label' => 'Content:',
        'class' => 'soria',
        )
    )
);
$this->contents->addPlugins(array('|', 'createLink');