Twig_Error_Syntax для "Неизвестного фильтра" с фильтром Twig в Timber

Это должно быть просто, но я не вижу, что не так. Я использую пример простого фильтра по адресу https://twig.symfony.com/doc/1.x/advanced.html с Twig 1.34 в Timber, плагином WordPress.

я добавил

// an anonymous function
$filter = new Twig_SimpleFilter('rot13', function ($string) {
    return str_rot13($string);
});

а также

$twig = new Twig_Environment($loader);
$twig->addFilter($filter);

в файл functions.php моей темы.

Но используя {{ 'Twig'|rot13 }} в моем файле view.twig выдает фатальную ошибку

PHP Fatal error:  Uncaught exception 'Twig_Error_Syntax'
with message 'Unknown "rot13" filter' in view.twig

и уведомление

Undefined variable: loader in functions.php

Используя фильтр как {{ 'Twig'|lower }} работает нормально.

Нужно ли добавлять функции в functions.php другим способом?

1 ответ

Решение

Согласно документации здесь (название: Добавление к ветке)

это должно быть сделано так (в functions.php):

add_filter('timber/twig', function($twig) {
   $twig->addExtension(new Twig_Extension_StringLoader());

   // add Your filters here
   $twig->addFilter(
     new Twig_SimpleFilter(
       'rot13', 
       function($string) {
         return str_rot13($string);
       }
     )
   );
   // or simply: 
   // $twig->addFilter(new Twig_SimpleFilter('rot13', 'str_rot13'));

   $twig->addFilter(
     new Twig_SimpleFilter(
       'hello', 
       function($name) {
         return 'Hello, '.$name;
       }
     )
   );

   return $twig;
});
Другие вопросы по тегам