我有一个viewhelper,它在typo3 v7.x中工作得很好,但是在v8.x中,它的输出不再是纯HTML,而是HTML编码的。
简化的ViewHelper类:
namespace MyName\Teaserbox\ViewHelpers; class TeaserboxViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper { public function render ( $html = null ) { return "<div><h2>$html</h2></div>" } }
简化的HTML:
<m:teaserbox><f:cObject typoscriptObjectPath="lib.someHTML"></f:cObject></m:teaserbox>
输出类似于:
<div><h2>TEST</h2></div>
可以通过添加来关闭转义 protected $escapeOutput = false; 到您的ViewHelper。
protected $escapeOutput = false;
namespace MyName\Teaserbox\ViewHelpers; class TeaserboxViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper { protected $escapeOutput = false; public function render ( $html = null ) { return "<div><h2>$html</h2></div>" } }
这样做,您必须知道,为了防止XSS,您需要自己清理用户输入。