html - Twig 转义 HTML 并呈现为原始格式

标签 html symfony twig

我希望有人能在这个问题上帮助我。

我正在从数据库中提取详细信息以显示在 Twig 模板上(使用 Symfony2),但它在数据库中的保存方式使得解释 HTML 变得困难。

基本上,HTML 标签已经被翻译成表格中的实体,例如:

<p>Bach Flower Crab Apple Remedy: the "cleansing" Remedy can be used both internally and externally </p><p><strong>

等等。我研究了 twig 中的渲染选项并尝试了以下方法(基于我渲染的产品描述循环):

{% set strategy = 'html' %}
{% autoescape 'html' %}
{{ product.description|escape('html')|raw }}
{% endautoescape %}

还有:

{{ product.description|raw }}

第一种方法只是回显现有内容(作为实体),第二种方法只是将 HTML 标记呈现到页面,如下所示:

<p>Bach Flower Crab Apple Remedy: the "cleansing" Remedy can be used both internally and externally.</p><p><strong>...

因此,如您所见,我找不到一种方法来实际解释 HTML 标记以按应有的方式显示描述。

有没有办法做到这一点?我不能在 PHP 中这样做,因为它所做的只是将一个对象发送到循环通过的模板:

public function showAction(Request $request, $store_id=0)
{
    $max = 1000;
    $repository = $this->getDoctrine()->getRepository('AppBundle:Product');
    $products = $repository->getProductsByStoreId($store_id,$max);
    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $products,
        $request->query->get('page', 1),
        20
    );

    $return['products'] = $pagination;
    $return['categories'] = $this->getCategories();

    return $this->render('AppBundle:tables:productstable.html.twig', $return);
}

最佳答案

您的核心问题是您的数据库中没有开始的 HTML。 充其量 Twig 可能会输出一些 HTML 实体,这些实体将呈现为“

...”,而在“最差”情况下,Twig 将转义要呈现的文本它实际上是准确的,即“

...”。期望 Twig 输出将呈现段落的实际 HTML 是不现实的,因为那根本不是您的原始数据包含的内容。

您必须首先在 PHP 中对该文本进行 HTML 解码,然后使用 ..|raw 在 Twig 中输出它。 raw 表示 Twig 将按原样输出它,而不会进一步转义它。既然从数据库中获取数据到然后html_entity_decode是废话它,您需要在此处修复您的数据输入! 不要对要数据库的数据进行 HTML 编码,它没有任何用处。

关于html - Twig 转义 HTML 并呈现为原始格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32221670/

相关文章:

javascript - 从 ajax 调用获取 HTML 或 JSON 响应,哪个好?

php - Symfony2 - 在 Netbeans 上自动安装 Assets

php - 重新排列对象PHP

php - Symfony2 : Using a repository in a command

symfony - 为 Twig 模板定义自定义文件系统路径

symfony - 允许 bundle 扩展 Assetic 的 Assets 配置

html - 无 Jade express 发电机

html - &lt;input type =“search”> 在 firefox 下不再显示取消按钮 (x)

javascript - 函数结束后文本框值被清除(问题): JQuery

php - Twig - 从包含的或父模板渲染 block