2017-07-17 118 views
21

我正在运行drupal 8,composer和npm执行gulp任务。'Twig_Error_Syntax'消息'未知'呈现“filter

当我运行NPM开始..我的任务管理器:我碰到下面的堆栈跟踪:

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 

我已经看了通过作曲家安装树枝桥/ symfony的树枝,但我似乎无法到摆脱错误信息。

我只是沟渠使用树枝过滤器“渲染”?


更新:14/08/17

试图通过使用Drupal的8的twig_tweak模块提供的drupal_block功能时,我也已经遇到了同样的问题。

+1

看起来'render'是drupal本身添加的'Twig_Filter'。所以你需要找出为什么'filter'在你的安装中不可用。 [源代码](https://www.drupal.org/node/2448219) – DarkBee

+3

您是否尝试过按照Drupal堆栈交换上的这个问题列出的步骤? https://drupal.stackexchange.com/questions/184184/error-when-creating-a-custom-twig-filter – mickburkejnr

+0

我也许有点晚了,但你尝试模块竹树枝?您可以使用'{{bamboo_render_block('my_custom_block')}}或系统块使用实体呈现器'{{bamboo_render_entity('block','my_theme_messages')}}'渲染自己的块。 https://www.drupal.org/project/bamboo_twig –

回答

0

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

要解决这个问题,你应该让你的枝条扩展延伸枝条内部的枝条扩展类。您的类应该定义是这样的:

class MyExtension extends \Twig_Extension { 

做出这样的转变后,您还可以删除从MODULE.services.yml

link

0

我从来没见过的那类设置参数这在Drupal上下文中,但与使用Twig的其他平台一起工作时,我发现在平台安装过程早期发生错误时会出现类似的问题。

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

  • 平台开始运行自身的引导;加载CMS核心等等。
  • 在这个过程的早期阶段,它遇到了一个错误。
  • 然后它会尝试呈现错误页面。
  • 但是,错误页面使用了枝条模板。
  • 启动过程尚未加载模板中使用的所有分支扩展。
  • 繁荣,你会得到一个枝条错误,指出“未知的枝条功能”,而不是真正的错误信息。

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

“正确的”解决方案是修改错误页面模板,以使它们最小化并且不使用任何非核心的小枝函数。但是,如果您在页面加载过程的早期发生崩溃,实际上很难做到这一点。

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

我不确定您所看到的是与我所看到的相同的东西,但它听起来很相似,所以我希望这会有所帮助。