【问题标题】:CkEditor - how to parse html from database into formattingCkEditor - 如何将 html 从数据库解析为格式
【发布时间】:2012-11-28 11:39:46
【问题描述】:

我在 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 没有任何运气。

【问题讨论】:

    标签: php javascript ckeditor


    【解决方案1】:
        CKEDITOR.replace(elemId,
        {
            entities: false,
            basicEntities: false,
            entities_greek: false,
            entities_latin: false,
            htmlDecodeOutput:true,
        }
        );
    

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

    【讨论】:

    • 谢谢 - 我将它添加到哪里?
    • @Andy 将其添加到脚本标签中。
    • 谢谢,但它仍然无法正常工作......它正在正确替换文本区域,但仍然没有将数据库中的字符串解析为格式
    【解决方案2】:

    感谢 Harry - 您帮助完成了设置。我不得不调整 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 错误,这就是我去掉多余空格的原因 - 这解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多