Про фильтры в Twig

Всем хороши пользовательские фильтры в Twig, кроме одного: при добавлении нового фильтра нужно создавать объект класса Twig_Filter_Method или Twig_Filter_Function в зависимости от того, чем является callback — массивом, содержащим объект и имя метода, или строкой. Возможности передать в качестве фильтра анонимную функцию (объект класса Closure), насколько я понимаю, нет вообще.

Почему нельзя было сделать сразу, чтобы понимался любой корректный callback? Интересно, в шаблонизаторе Django тоже не получится сделать фильтр из анонимной функции?

Об авторе WST

Веб-программист (PHP и Python) из с. Красногвардейского республики Адыгея, в настоящее время работаю в студии «Webline Masters» в Майкопе на ул. Железнодорожной. Участвовал в крупном международном Jabber-сообществе с центром в Джакарте.
Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.

2 комментария: Про фильтры в Twig

  1. Сергей говорит:

    В Django можно сделать фильтр из анонимной функции
    https://docs.djangoproject.com/en/1.4/howto/custom-template-tags/#writing-custom-template-filters

    from django import template
    register = template.Library()
    register.filter('lower', lambda val: val.lower())

    Но на практике так не делают, используют хотя бы обычную именованную функцию.

    • WST говорит:

      Спасибо, исчерпывающий ответ :)
      Я захотел прикрутить у себя анонимную функцию только по той причине, что мне надо было «подцепить» ещё одно вспомогательное значение из того контекста, где я определяю фильтр. Создавать ради этого класс и впихивать в него это значение через конструктор, чтобы потом вызывать из этого класса один и тот же единственный метод, как-то не эстетично :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>