Пример всем.
В общем я не знаю какой тут костыль придумать. Проблема:
Я вывожу пост. Но пост перед выводом я прогоняю через XSS фильтр встроенного в VOLT:
{{ post.message|e }}
Но суть в том, что post.message имеет MarkDown разметку. Которую нужно преобразовать в валидный HTML.
Первый вариант что я делаю:
{{ mark.Down(post.message) }}
Но так можно пропихнуть XSS.
Я решил перед передачей post.message в функцию markDown::parse() прогонять через фильтр XSS:
{% set post.message = post.message|e %}
<div class="post-text">
{{ markDown.parse(post.message) }}
</div>
Но так почему-то портится MarkDown разметка. (На выводе выходит обработаная MarkDown'ом строка, но HTML теги разметки тоже эскейпятся фильтром)
Почему так? По логике же не должно такого быть.
Скомпилированный шаблон выглядит так:
<?php $post->message = $this->escaper->escapeHtml($post->message); ?>
<div class="post-text">
<?php echo $this->markDown->parse($post->message); ?></p>
</div>
У меня уже голова кругом. что тут не так?