gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:15:24 24 4
gpt4 key购买 nike

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

我正在从数据库中提取详细信息以显示在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com