如何使用Symfony 2和Twig显示保存在数据库中的HTML标记

时间:2011-08-19 10:13:33

标签: database symfony

我设法构建了一个动态显示数据库数据的页面。但是,此代码保存在数据库中:

<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正确呈现?

非常感谢!

1 个答案:

答案 0 :(得分:23)

如果您想这样做,则需要在树枝模板中使用raw过滤器。与twig文档中描述的一样,原始过滤器将值标记为安全,这意味着在启用了自动转义的环境中,如果raw是应用于它的最后一个过滤器,则此变量不会被转义。

在您的情况下,它是:{{ content | raw }}