symfony - Twig 扩展禁用自动转义
问题描述
我做了一个树枝扩展,以便能够调用模板中的函数,但不幸的是,现在这些函数的渲染 html 内容被转义了。你知道我怎么能禁用它吗?
FrontendTwigExtension.php
class FrontendTwigExtension extends Twig_Extension
{
/**
* @var DataProviderService
*/
private $dataProvider;
/**
* FrontendTwigExtension constructor.
* @param DataProviderService $dataProvider
*/
public function __construct(DataProviderService $dataProvider)
{
$this->dataProvider = $dataProvider;
}
/**
* @return array
*/
public function getFunctions(): array
{
return array(
new Twig_Function('getProductDetailData',
[$this, 'getProductDetailData'],
['needs_environment' => true]
),
new Twig_Function('getPageHeader',
[$this, 'getPageHeader'],
['needs_environment' => true]
)
);
}
/**
* @param Twig_Environment $env
* @return string
* @throws Twig_Error_Loader
* @throws Twig_Error_Runtime
* @throws Twig_Error_Syntax
*/
public function getPageHeader(Twig_Environment $env): string
{
return $env->render('Component/PageHeader/pageHeader.html.twig');
}
/**
* @param Twig_Environment $env
* @return string
* @throws Twig_Error_Loader
* @throws Twig_Error_Runtime
* @throws Twig_Error_Syntax
*/
public function getProductDetailData(Twig_Environment $env): string
{
$service = new ProductDetailDataService($this->dataProvider);
return $env->render('Module/ProductDetailPage/productDetailData.html.twig',
[
'productData' => $service->getData()
]
);
}
}
模板.html.twig
{% extends 'base.html.twig' %}
{% block pageHeader %}
{{ getPageHeader() }}
{{ getProductDetailData() }}
{% endblock %}
服务.yaml
App\Extension\FrontendTwigExtension:
arguments:
- '@App\DataProvider\DataProviderService'
tags:
- { name: 'twig.extension' }
解决方案
您需要设置is_safe
选项:
['needs_environment' => true, 'is_safe' => ['html']]
推荐阅读
- javascript - 如何仅在反应状态发生突变后才进行axios调用?
- windows - ImageMagick 没有此图像格式“PDF”的解码委托 Windows
- go - 为什么 unmarshal 在 golang 中改变对象的类型
- twitter-bootstrap - 具有对齐中心列的三列行
- javascript - 从 Nuxt 配置文件提供资产
- javascript - 在解析 HTML 之前等待脚本结束
- laravel - PHP array_map() 总是将我的第一个索引值更改为零值
- c# - 当索引不同步时,如何与另一个数组相比重新对齐数组数据?
- java - Java 在单独的文件中找不到特定方法
- python - Python海龟UnboundLocalError