6

PHP BladeおよびHandlebars * テンプレートを編集できる WYSIWYG HTML エディターが必要です。私はTinyMCECKEditor、およびブートストラップ wysihtml5を試しましたが、それらはすべて無効な HTML を「修正」します。誰かが代替案を提案できますか?

以下を変更せずに、WYSIWYG モードとソース モードを切り替えることができる必要があります。

<table>
  <thead>
    <tr>
      <tr>Column 1</tr>
      <tr>Column 2</tr>
    </tr>
  </thead>
  <tbody>
  @foreach ($data as $datum)
    <tr>
      <td>{{ $datum->col1 }}</td>
      <td>{{ $datum->col2 }}</td>
    </tr>
  @endforeach
  </tbody>
</table>

私が見つけたすべてのエディターは、テーブルを削除し@foreach、時にはテーブルも壊します。「ビジュアル」モードが壊れていてもあまり気にしませんが、HTML はそのままにしておく必要があります。

*Handlebars 変数の前に $ を付けて、ブレード テンプレートと広く互換性があるようにします。

4

2 に答える 2

5

そのために CKEditor を使用できますが、エディターに修正させたくないコードの部分を定義する必要があります。

CKEditor には、有効な HTML でなくても、エディターが触れてはならないソースの部分を定義するために使用できるprotectedSource機能があります。

あなたの@foreachループとあなたの例の変数で動作する例を作成しました。ニーズに合わせて拡張することができます。

CKEDITOR.editorConfig = function( config ) {
    ....
    ....
    config.protectedSource.push( /@foreach.*/g );
    config.protectedSource.push( /@endforeach.*/g );
    config.protectedSource.push( /{{.*}}/g );
}

確認できる作業フィドルは次のとおりです。https://jsfiddle.net/0tw75xt3/

変更したことに注意してください

<tr> <tr>Column 1</tr> <tr>Column 2</tr> </tr>

これは有効な HTML ではなく、そうすべきではないと思ったからです。<tr><tr>

より複雑なテンプレートをサポートしたい場合は、protectedSource 内でより複雑な正規表現が必要になりますが、これは実際に開始するのに適した場所になります。

于 2016-07-07T02:46:49.170 に答える