@ugin_root

Как применять произвольный фильтр после своего?

У меня есть несколько своих фильтров для 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>
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы