【问题标题】:'Twig_Error_Syntax' with message 'Unknown "render" filter带有消息“未知“渲染”过滤器的“Twig_Error_Syntax”
【发布时间】:2017-12-21 22:57:39
【问题描述】:

我正在运行 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

我查看了通过 composer 安装 twig-bridge / symfony twig,但我似乎无法摆脱错误消息。

我只是放弃使用树枝过滤器“渲染”吗?


更新:17 年 8 月 14 日

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

【问题讨论】:

  • 似乎render 是由drupal 本身添加的Twig_Filter。所以你需要找出为什么filter 在你的安装中不可用。 source
  • 您是否尝试过在 Drupal 堆栈交换上按照此问题中概述的步骤进行操作? drupal.stackexchange.com/questions/184184/…
  • 我可能有点晚了,但是您尝试过 Bamboo Twig 模块吗?您可以使用{{ bamboo_render_block('my_custom_block') }} 渲染您自己的块或使用实体渲染器{{ bamboo_render_entity('block', 'my_theme_messages') }} 渲染系统块。 drupal.org/project/bamboo_twig
  • npm start 是否运行 gulp 任务?如果是这样,请在此处发布 Gulpfile。
  • 请看一下_basic_page.twig的来源

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


【解决方案1】:

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

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

class MyExtension extends \Twig_Extension {

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

link

【讨论】:

    【解决方案2】:

    我没有在 Drupal 环境中看到过这种情况,但是在使用其他使用 Twig 的平台时,我发现在平台设置过程的早期出现错误时会出现类似的问题。

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

    • 平台开始运行它的启动;加载 CMS 核心等。
    • 在此过程的早期某个时间点,它遇到了错误。
    • 然后它会尝试呈现错误页面。
    • 但是,错误页面使用了 Twig 模板。
    • 启动过程尚未加载模板中使用的所有树枝扩展。
    • Boom,您收到一条 Twig 错误,指出“未知 Twig 功能”,而不是真正的错误消息。

    当我以前遇到过这种情况时,事实证明很难诊断出实际错误是什么。

    “正确”的解决方案是修改错误页面模板,使其最小化并且不使用任何非核心 twig 功能。但是,如果您在页面加载过程的早期遇到崩溃,那么实际上很难做到这一点。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 2021-06-06
      • 1970-01-01
      • 2016-01-09
      相关资源
      最近更新 更多