如何在 fluid partials(TYPO3)中禁用特殊字符的自动编码

4
应该很简单。我正在尝试向“YAG”(另一个图库)扩展中的流体局部添加输入字段。
输入:<f:form.textfield id="live-filter" name="test" /> 输出:&lt;input id=&quot;live-filter&quot; type=&quot;text&quot; name=&quot;test&quot; /&gt; 不知何故,代码在传递过程中被过滤了,但我不知道原因。TYPO3 v.6.2
YAG v.3.2.1
编辑:一个猜测是 TYPO3 本身进行了一些输出过滤,但是在哪里?我没有刻意设置任何内容。
3个回答

3
你需要向上遍历路径,以检查是否有任何包含转义的流体标签。一般来说,所有标签都会进行转义。 还要检查<f:render partial...周围的代码。
也可能是调用流体模板的TypoScript代码设置了.htmlspecialchars = 1

非常感谢,我忘记将问题标记为已回答。这是由于 .htmlspecialchars = 1 导致的。 - Florian Rachor

2
自从 TYPO3 8 版本以来,还有一个需要注意的问题:除非另有说明,否则自定义视图助手会对输出进行 htmlspecialchars 处理。解决方法如下:
<?php
namespace Vendor\ArTest\ViewHelpers;

class YourViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper{

  /**
    * As this ViewHelper renders HTML, the output must not be escaped.
    *
    * @var bool
    */
  protected $escapeOutput = false;

2

从TYPO3 9.5版本到10.4版本,您还可以将Fluid模板中的输出包装在<f:format.htmlentitiesDecode>标签中,如下所示:

<f:format.htmlentitiesDecode>
    <f:form.textfield id="live-filter" name="test" />
</f:format.htmlentitiesDecode>

更多关于此内容的信息可以在TYPO3视图助手参考文档中找到。(链接)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接