0

我在 CakePHP 2.x 中使用 Ckeditor 3.1 版

我可以让编辑器加载和替换文本区域。HTML 使用 HTML 格式标记保存到数据库,如下所示:

<p>
<strong>&lt;p&gt; This is a test&lt;/p&gt; </strong></p>

当我将它插入 CkEditor 时,我会在编辑器屏幕中看到以下内容:

<p> <strong>&lt;p&gt; This is a test&lt;/p&gt; </strong></p>

如果我在设置 CkEditor 之前使用 html_entity_decode 我会在编辑器屏幕中得到这个:

<p> <strong><p> This is a test</p> </strong></p>

这就是我在 edit.ctp Cake 视图中加载编辑器的方式:

$bio = $this->data['Club']['bio'];  
echo $this->Cksource->ckeditor('Club.bio', array('value'=>$bio) );

如何强制 CkEditor 解析传入的 HTML,以便对其进行格式化而不显示 HTML 标签?

编辑:我已经手动覆盖了 Cake Helper,以便输出的 Javascript 看起来像这样:

CKEDITOR.replace('data[Club][bio]',
                    {
                        entities: false,
                        basicEntities: false,
                        entities_greek: false,
                        entities_latin: false,
                        htmlDecodeOutput: true
                    }
                );

我认为,适当的表单字段正在转换为 ckeditor 实例,因此第一个参数是正确的。我也尝试过更新 config.js 没有任何运气。

4

2 回答 2

1
    CKEDITOR.replace(elemId,
    {
        entities: false,
        basicEntities: false,
        entities_greek: false,
        entities_latin: false,
        htmlDecodeOutput:true,
    }
    );

希望您已将此添加到您的代码中。否则请试试这个。

于 2012-11-28T11:44:35.223 回答
0

谢谢哈利 - 你帮助设置。我不得不调整 Cake 的东西,让 Javascript 看起来像你说的那样。

无论如何,这对我有用:

$bio = $this->data['Club']['bio'];  
$bio = html_entity_decode($bio);
$bio = preg_replace( '/\s+/', ' ', $bio );

$events['instanceReady'] = "function (ev) {
            console.log(ev.editor);
            ev.editor.setData( '$bio' );
        }";

echo $this->Cksource->ckeditor('Club.bio', array(
                    'value'=>$bio, 
                    'config'=>array(
                        'entities'=>false,
                        'basicEntities'=>false,
                        'entities_greek'=>false,
                        'entities_latin'=>false, 
                            'htmlDecodeOutput'=>false), 
                    'events'=>$events
                    ) 
                );

我想在回显编辑器时没有必要输入值。

尝试 setData(“意外的非法标签”)时,我不断收到 Javascript 错误,这就是为什么我去掉多余的空格 - 这解决了这个问题。

于 2012-11-28T14:44:21.570 回答