Twig_Error_Syntax for "Unknown filter" 与 Timber 中的 Twig 过滤器

Blu*_*nch 5 php wordpress twig timber

这必须很简单,但我看不出有什么问题。我正在使用https://twig.symfony.com/doc/1.x/advanced.html#filters上的简单过滤器示例和 Twig 1.34 in Timber,一个 WordPress 插件。

我加了

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

$twig = new Twig_Environment($loader);
$twig->addFilter($filter);
Run Code Online (Sandbox Code Playgroud)

到我的主题的functions.php 文件。

但是{{ 'Twig'|rot13 }}在我的 view.twig 文件中使用会出现致命错误

PHP Fatal error:  Uncaught exception 'Twig_Error_Syntax'
with message 'Unknown "rot13" filter' in view.twig
Run Code Online (Sandbox Code Playgroud)

和通知

Undefined variable: loader in functions.php
Run Code Online (Sandbox Code Playgroud)

使用类似的过滤器{{ 'Twig'|lower }}可以正常工作。

我是否需要以不同的方式将函数添加到 functions.php?

num*_*8er 4

根据此处的文档(标题:添加到 Twig

应该像这样完成(在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;
});
Run Code Online (Sandbox Code Playgroud)

  • 凉爽的!工作完美。现在我知道如何解决我之前的问题 /sf/ask/3486416041/ (2认同)