2011-08-19 2 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 코드를 렌더링한다는 것을 알고 있습니다. 심포니 (분명히)가이 HTML 태그를 렌더링하기를 원합니다. Symfony가 사이트의 다른 곳에 데이터베이스에 저장된 HTML 태그를 여전히 sanitise 할 수 있도록하려면이 목적으로 만 이것을 어떻게 얻을 수 있습니까? 단지 내가 심포니에 대해 자세히 알아볼 수 있습니다, 또한

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)); 
} 

되는 HTML의 렌더링 : 당신의 내용

뿐만 아니라, 이것은 내가 데이터베이스에서 데이터를 끌어 사용하고있는 코드입니다 PHP의 유일한 일을 태그하거나 Twig를 사용하여 올바르게 렌더링 할 수 있습니까?

감사합니다.

답변

22

이렇게하려면 나뭇 가지 템플릿에서 raw 필터를 사용해야합니다. 나뭇 가지 설명서에서 설명한 것처럼 원시 필터는 값을 안전한 것으로 표시합니다. 즉, 자동 이스케이프가 설정된 환경에서이 변수는 raw가 적용된 마지막 필터 인 경우 이스케이프되지 않습니다.

귀하의 경우 : {{ content | raw }}

+0

대단히 감사합니다. 훌륭하게 작동 :) – mickburkejnr

+0

내가 주어진 때 그것은 작동하지 않습니다

+0

정말 작동하지 않습니다? 실제로 순수 HTML을 표시하기 위해''raw'' 필터를 사용하고 플래그가 올바르게 렌더링됩니다. – egeloen

관련 문제