【问题标题】:Twig_Error_Syntax for "Unknown filter" with a Twig filter in Timber木材中带有 Twig 过滤器的“未知过滤器”的 Twig_Error_Syntax
【发布时间】:2018-09-24 22:57:14
【问题描述】:

这一定很简单,但我看不出有什么问题。我正在使用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);
});

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

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

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

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吗?

【问题讨论】:

  • 我会说是的,很可能您需要这样做。也许它只是该 view.twig 文件的正确位置。
  • 好的,但如何做到这一点是我的问题。
  • 根据我从文档中读到的内容,您做的一切都是正确的。我认为只有在哪里这样做不是很清楚(对我来说也是如此)。所以老实说,这对我来说看起来不错。
  • 没错,文档并不清楚 哪里 php 函数的去向。并且列出了一个global 函数,它“与任何其他模板变量一样,除了它在所有模板和宏中都可用”,但不清楚如何使用它。
  • 现在这是一个提示。 $loader 未定义。您需要在定义 $loader 的地方编写该代码,否则它无法工作。

标签: php wordpress twig timber


【解决方案1】:

根据文档here(标题:添加到 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;
});

【讨论】:

  • 啊,谢谢!把它变成一个完整的功能是有道理的。但是在return str_rot13($string) 之后我得到了一个解析错误
  • @BlueDogRanch 已修复,忘记在行尾加分号 :D
  • 酷!完美运行。现在我知道如何处理我之前的问题stackoverflow.com/questions/49805943/…
  • @BlueDogRanch 乐于提供帮助
  • 好吧,尝试更复杂的过滤器中断 :( 想看看我的旧问题吗?stackoverflow.com/questions/49805943/…
猜你喜欢
  • 2017-12-21
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多