Подтвердить что ты не робот

'Twig_Error_Syntax' с сообщением 'Unknown "render" filter

Я запускаю 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 через композитор, но я не могу избавиться от сообщения об ошибке.

Я просто канаву использую фильтр "ветки"?


Обновление: 14/08/17

Я также столкнулся с той же проблемой при попытке использовать функцию drupal_block, предоставляемую через модуль Twup_tweak Drupal 8.

4b9b3361

Ответ 1

Проблема в приведенном выше коде заключается в том, что ваш класс расширения Twig расширяет внутренний класс расширения Drupal Twig. Это нарушает расширения Twig, добавленные ядром Drupal, и почему вы получаете ошибку.

Чтобы исправить это, вы должны сделать расширения Twig расширением внутреннего стиля Twigs. Ваш класс должен быть определен следующим образом:

class MyExtension extends \Twig_Extension {

После внесения этого изменения вы также можете удалить аргументы, установленные для этого класса, из модуля MODULE.services.yml

ссылка

Ответ 2

Я не видел этого в контексте Drupal, но, работая с другими платформами, использующими Twig, я видел похожие проблемы, возникающие при возникновении ошибки в начале процесса установки платформы.

Типичная последовательность событий такова:

  • Платформа запускает свою загрузку; загрузка ядра CMS и т.д.
  • В какой-то момент в начале этого процесса он попадает в ошибку.
  • Затем он пытается отобразить страницу с ошибкой.
  • Однако на странице с ошибкой используется шаблон Twig.
  • Процесс запуска еще не загрузил все расширения ветки, используемые в шаблоне.
  • Boom, вы получите сообщение об ошибке, в котором указана "неизвестная функция Twig" вместо реального сообщения об ошибке.

Когда у меня было это раньше, очень сложно диагностировать, что такое фактическая ошибка.

"Правильное" решение состояло в том, чтобы изменить шаблоны страниц ошибок, чтобы они были минимальными и не использовали какие-либо неосновные функции твига. Но если вы начнете крах в начале процесса загрузки страницы, это может быть сложно сделать на самом деле.

В первом случае я разрешил его, отладив систему и захватив данные, переданные в шаблон. Это показало мне, какова была настоящая ошибка. Устраняя эту ошибку, вы остановили ошибку ветки и позволили мне войти в систему.

Я не знаю точно, что то, что вы видите, это то же самое, что и то, что я видел, но это похоже на то, что я надеюсь, что это поможет.