* * * ``` * * @see https://docs.typo3.org/permalink/t3viewhelper:typo3-fluid-sanitize-html * @see \TYPO3\CMS\Core\Html\DefaultSanitizerBuilder */ final class HtmlViewHelper extends AbstractViewHelper { /** * @var bool */ protected $escapeChildren = false; /** * @var bool */ protected $escapeOutput = false; public function __construct( private readonly SanitizerBuilderFactory $sanitizerBuilderFactory ) {} public function initializeArguments(): void { $this->registerArgument('build', 'string', 'preset name or class-like name of sanitization builder', false, 'default'); } public function render(): string { $value = $this->renderChildren(); $build = $this->arguments['build']; return $this->createSanitizer($build)->sanitize((string)$value, self::createInitiator()); } private static function createInitiator(): SanitizerInitiator { return GeneralUtility::makeInstance(SanitizerInitiator::class, self::class); } private function createSanitizer(string $build): Sanitizer { if (class_exists($build) && is_a($build, BuilderInterface::class, true)) { $builder = GeneralUtility::makeInstance($build); } else { $builder = $this->sanitizerBuilderFactory->build($build); } return $builder->build(); } }