消息“未知”的“Twig_Error_Syntax”呈现“filter”

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

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

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树枝通过composer php,但我似乎无法摆脱错误信息。

我只是沟渠使用树枝filter“渲染”?


更新:14/08/17

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

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

为了解决这个问题,你应该使你的枝条扩展扩展枝条的内部枝条扩展类。 你的课应该像这样定义:

 class MyExtension extends \Twig_Extension { 

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

链接

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

典型的事件顺序是这样的:

  • 平台开始运行启动; 加载CMS内核等
  • 在这个过程早期的某个时候,它遇到了一个错误。
  • 然后它尝试呈现错误页面。
  • 但是,错误页面使用Twig模板。
  • 启动过程尚未加载模板中使用的所有分支扩展。
  • 繁荣,你会得到一个树枝错误,说明“未知的树枝function”,而不是真正的错误信息。

当我以前有过这种情况时,很难诊断出实际的错误。

“正确”的解决scheme是修改错误页面模板,使它们是最小的,不使用任何非核心的小枝function。 但是,如果在页面加载过程中发生崩溃,实际上很难做到这一点。

在第一种情况下,我通过debugging系统来解决这个问题,并将哪些数据传递给模板。 这显示了我真正的错误是什么。 解决该错误,然后停止发生枝条错误,并允许我进入系统。

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