' Twig_Error_Syntax'消息'未知"渲染"过滤

时间:2017-07-17 11:56:43

标签: php node.js symfony twig drupal-8

我正在运行drupal 8,composer和npm来执行gulp任务。

当我运行npm start ..我的任务管理器:我得到以下堆栈跟踪:

Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'Unknown "render" filter.' in /web/project/web/themes/emulsify/components/_patterns/04-templates/basic-page/_basic_page.twig:26
Stack trace:
#0 /web/project/web/themes/emulsify/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(481): Twig_ExpressionParser->getFilterNodeClass('render', 26)
#1 /web/project/web/themes/project_theme/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(466): Twig_ExpressionParser->parseFilterExpressionRaw(Object(Twig_Node_Expression_Name))
#2 /web/project/web/themes/project_theme/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(320): Twig_ExpressionParser->parseFilterExpression(Object(Twig_Node_Expression_Name))
#3 /web/project/web/themes/project_theme/pattern-lab/vendor/twig/twig/lib/Twig/ExpressionParser.php(212): Twig_ExpressionParser->parsePostfixExpression(Object(Twig_Node_Expression_Name))
#4 /web/project in /web/project/web/themes/project_theme/components/_patterns/04-templates/basic-page/_basic_page.twig on line 26

我已经看过通过作曲家安装twig-bridge / symfony twig,但我似乎无法摆脱错误信息。

我是否只是使用树枝过滤器"渲染"?

更新:17/08/17

在尝试使用Drupal 8&#39的twig_tweak模块提供的drupal_block函数时,我也遇到了同样的问题。

2 个答案:

答案 0 :(得分:2)

上面代码中的问题是你的Twig扩展类正在扩展内部的Drupal Twig扩展类。这打破了Drupal核心添加的Twig扩展,这就是你得到错误的原因。

要解决此问题,您应该使您的Twig扩展扩展Twigs内部Twig扩展类。你的课应该这样定义:

class MyExtension extends \Twig_Extension {

进行更改后,您还可以从MODULE.services.yml中删除为该类设置的参数

link

答案 1 :(得分:0)

我在Drupal上下文中没有看到这个,但是在使用Twig的其他平台上工作时,我发现在平台设置过程的早期发生错误时会发生类似的问题。

典型的事件顺序如下:

  • 平台开始运行启动;加载CMS核心等
  • 在此过程的早期某个时刻,它会遇到错误。
  • 然后尝试渲染错误页面。
  • 但是,错误页面使用Twig模板。
  • 启动过程尚未加载模板中使用的所有树枝扩展名。
  • Boom,你得到一个树枝错误说明"未知的Twig功能"而不是真正的错误消息。

如果我以前有这个,事实证明很难诊断实际错误是什么。

"正确"解决方案一直是修改错误页面模板,以便它们很小并且不使用任何非核心树枝函数。但如果您在页面加载过程中早期发生崩溃,那么实际上很难实现。

在第一种情况下,我通过调试系统并捕获传递给模板的数据来解决它。这向我展示了真正的错误是什么。解决该错误然后停止发生树枝错误并允许我进入系统。

我不确定你所看到的是否和我所看到的一样,但听起来很相似所以我希望这会有所帮助。