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 タグがフォーマットされ、表示されないようにするにはどうすればよいですか?

編集: 出力される Javascript が次のようになるように、Cake Helper を手動で上書きしました。

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

ハリーに感謝します。セットアップを手伝ってくれました。あなたが言ったようにJavascriptを表示するには、Cakeのものを微調整する必要がありました。

とにかく、ここに私のために働いているものがあります:

$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 (「予期しない ILLEGAL タグ」) を実行しようとすると Javascript エラーが発生し続けたため、余分な空白を削除しました。これにより、問題が修正されます。

于 2012-11-28T14:44:21.570 に答える