Как отобразить HTML-теги, сохраненные в базе данных, используя Symfony 2 и Twig - PullRequest
6 голосов
/ 19 августа 2011

Мне удалось создать страницу, которая будет динамически отображать данные из базы данных.Однако этот код, который сохраняется в базе данных:

<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 Ответ

23 голосов
/ 19 августа 2011

Если вы хотите это сделать, вам нужно использовать фильтр raw в шаблоне веточки. Как описано в документации по ветке, необработанный фильтр помечает значение как безопасное, что означает, что в среде с включенным автоматическим экранированием эта переменная не будет экранирована, если raw является последним применяемым к нему фильтром.

В вашем случае это: {{ content | raw }}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...