Typo3 Fluid Viewhelper f:format.json返回htmlentities以及流体中大括号的更多问题
在TYPO3 8 LTS中,我尝试从新闻列表构建json输出。以与流体手册中完全相同的方式使用viewhelper f:format.json时:Typo3 Fluid Viewhelper f:format.json返回htmlentities以及流体中大括号的更多问题,typo3,Typo3,在TYPO3 8 LTS中,我尝试从新闻列表构建json输出。以与流体手册中完全相同的方式使用viewhelper f:format.json时: {f:format.json(value: {foo: 'bar', bar: 'baz'})} 我明白了: {"foo":"bar","bar":"baz"} 这项工作: {f:format.json(
{f:format.json(value: {foo: 'bar', bar: 'baz'})}
我明白了:
{"foo":"bar","bar":"baz"}
这项工作:
{f:format.json(value: newsItem.datetime)->f:format.htmlentitiesDecode()}
但是我需要以这种方式格式化日期对象:
{newsItem.datetime->f:format.date(format: "%Y-%m-%d")}
现在,我正在寻找一种可能性来匹配这两者,以获得此输出:
{'date':'2018-03-16'}
我试过很多类似的方法,但都不管用
{f:format.json(value: {date:newsItem.datetime->f:format.date(format: "%Y-%m-%d")})->f:format.htmlentitiesDecode()}
你知道怎么做才对吗?
谢谢
彼得伯恩德在上面的评论中为我指明了方向——以下是我在他的小小帮助下找到的解决方案之一:
{f:format.json(value: {date:'{newsItem.datetime->f:format.date(format: "%Y-%m-%d")}'})->f:format.htmlentitiesDecode()}
f:format.raw的工作原理与f:format.htmlentitiesDecode基本相同;真正重要的是{newsItem.datetime->f:format.date(格式:“%Y-%m-%d”)}周围的两个“”
有了format.raw的想法,我还找到了另一个解决方案:
<f:format.raw value='{"date":"' />{newsItem.datetime->f:format.date(format: "%Y-%m-%d")}<f:format.raw value='"},' />
{newsItem.datetime->f:format.date(格式:“%Y-%m-%d”)}
看起来有点复杂,但有点复杂
<f:format.raw value='{' />
<f:format.raw value='}' />
可以在流体模板中使用花括号
谢谢 您是否尝试过
f:format.raw
而不是f:format.htmlentitiesDecode
?你试过{date:'{newsItem.datetime->f:format.date(format:%Y-%m-%d”)}}
?非常好!!这两种方法都有效。如果我非常努力,我就能理解为什么:-)谢谢!。我将把它写在一个答案中,这样每个人都可以看到它被解决了。format.raw
是用于未更改输出的viewhelper(我想知道为什么在v8的文档中会删除它)。您需要它,因为v8默认情况下,viewhelpers的输出是htmlentitiesencode
d。当您从一个对象开始并想要一个字符串时,第二个可能是必需的。执行变量求值(用'{}'
包装)可以确保它是一个字符串。我想知道为什么会引入htmlencoding,有什么线索吗?我想是安全性。