2016-08-16 29 views
0

Symfony3で書かれた簡単なブログアプリケーションがあります.TinyMCEをテキストエディタとして使用しています。 私は例のレコードは次のようになります場合は、データベース内のデータを格納しています:それはちょうどです(Twigはhtmlタグをレンダリングしません。rawは機能しません。

/** 
    * @Template 
    */ 

    public function adminAction() 
    { 
    $repository = $this->getDoctrine()->getRepository('BlogBundle:Post'); 

    $lastPosts = $repository->findBy(
    array(), 
    array('id' => 'DESC'), 4 
); 

    return array(
    'last_posts' => $lastPosts, 
); 
    } 

そして、このような小枝で返された値を処理:

<p>Lorem ipsum</p> 

私はこの方法を使用してDBから記事を取得しますコードの一部):

<div class="panel-body"> 
    {{post.text|raw}} 
</div> 

、出力は次のようになります。

<p>Lorem ipsum</p> 

htmlタグを削除してレンダリングさせるにはどうすればよいですか。私は、あなたが出力をアンエスケープする必要があり、キャッシュをクリアするために同じ結果:(

+1

[Twig(PHP Templating)のUnescapeまたはhtmlデコード]の可能な複製(http://stackoverflow.com/questions/15453579/unescape-or-html-decode-in-twig-php-テンプレート作成) – Koalabaerchen

答えて

2

私はエスケープされたHTMLです。rawを使用すると、コンテンツをエスケープして、エスケープされたHTMLが... HTMLを待つようになります。HTML。&lt;p&gt;Lorem ipsum&lt;/p&gt;がデータベースにHTMLコンテンツとして保存されています。あなたのページにタグが表示されているのは、小枝が自動的にHTMLをエスケープするためです。

簡単な修正として試すことができるものはですはエスケープされていないHTMLをエスケープします。しかし正直なところ、あなたのアプリケーションの健全性のために私が推奨するのは、あなたのデータベースのHTMLを直接エスケープすることです。あなたはデータベースに<p>Lorem ipsum</p>を持っていなければならず、{{post.text|raw}}を使うと完璧に動作します。

1

オクラホマので、問題は私のTinyMCEエディタの構成をしていました、私はだから今、私のデータベースに格納するHTMLタグの代わりに、エスケープHTMLを

<script> 
    tinymce.init({ 
    ... 
    entity_encoding: "raw" 
    }); 
</script> 

を使用しました。ありがとう@Terenothの説明

+0

シンプルできれいな答えを見つけたらうれしいです! :) – Terenoth

関連する問題