2011-08-19 3 views
6

私はデータベースからのデータを動的に表示するページを構築することができました。しかし、データベースに保存され、このコード:このようなSymfony 2とTwigを使ってデータベースに保存されたHTMLタグを表示するには

<p>This is the content for the radio <a href="#">page</a>.</p> 

ディスプレイ:

<p>This is the content for the radio <a href="#">page</a>.</p> 

は、HTMLタグがレンダリングされません。セキュリティ上の理由から、Symfony(セキュリティ上の目的のため)がHTMLコードをレンダリングすることを理解します。 symfony(明らかに)がこれらのHTMLタグをレンダリングするようにしたい。 Symfonyは、サイト上の他の場所にあるデータベースに保存されているHTMLタグを浄化するために、この目的のためだけにどうすればいいですか?あなたの情報については

だけでなく、これは私がデータベースからデータを引き出すために使用していたコードです:

public function mainpageAction($slug) 
{ 

    $content = $this->getDoctrine() 
     ->getRepository('SiteMainBundle:Content') 
     ->find($slug); 

    if (!$content) { 
     throw $this->createNotFoundException('No product found for slug '.$slug); 
    } 

    return $this->render('SiteMainBundle:Default:page.html.twig', array('content' => $content, 'slug' => $slug)); 
} 

はまた、ちょうどので、私はsymfonyの詳細を学ぶことができ、HTMLのレンダリングですPHPの唯一の仕事にタグを付けるか、Twigを使って適切にレンダリングすることができますか?

多くの感謝!

答えて

22

これを行うには、twigテンプレートでrawフィルタを使用する必要があります。ツリーのドキュメントで説明したように、生のフィルタはその値を安全とマークします。つまり、自動エスケープが有効な環境では、rawが最後に適用された場合にエスケープされません。あなたのケースでは

、それはです:{{ content | raw }}

+0

どうもありがとうございました!華麗に動作します:) – mickburkejnr

+0

私は与えられたときに動作しません

+0

本当に動作していませんか?実際には純粋なHTMLを表示するために '' raw''フィルタを使用し、フラグが正しくレンダリングされます。 – egeloen

関連する問題