У меня есть несколько своих фильтров для Twig. Часть из них возвращает маркдаун, а не текст или html.
После применения своего фильтра мне каждый раз приходится вызывать ещё один дополнительный фильтр, примерно так:
<span>
{{ value|my_filter|markdown }}
</span>
Если мой фильтр отдаёт например html, то я просто сообщаю через опции что вывод моего фильтра это валидный html и его не нужно экранировать:
namespace App\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
class AdvertExtension extends AbstractExtension
{
public function getFilters():array
{
return [
new TwigFilter('my_filter', [$this, 'my_filter'], ['is_safe' => ['html']]),
];
}
public function my_filter($value): string
{
return sprintf('<b>%s</b>', htmlspecialchars($value));
}
}
Вопрос, как мне сделать так, что-бы после моего фильтра к его выводу применялся ещё один фильтр?
Т.е. чтобы вместо того что я делаю в первом примере, мне нужно было делать так:
<span>
{{ value|my_filter }}
</span>