Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 Fluid Viewhelper f:format.json返回htmlentities以及流体中大括号的更多问题_Typo3 - Fatal编程技术网

Typo3 Fluid Viewhelper f:format.json返回htmlentities以及流体中大括号的更多问题

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(

在TYPO3 8 LTS中,我尝试从新闻列表构建json输出。以与流体手册中完全相同的方式使用viewhelper 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,有什么线索吗?我想是安全性。