'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.
Ответы
Ответ 1
Проблема в приведенном выше коде заключается в том, что ваш класс расширения Twig расширяет внутренний класс расширения Drupal Twig. Это нарушает расширения Twig, добавленные ядром Drupal, и почему вы получаете ошибку.
Чтобы исправить это, вы должны сделать расширения Twig расширением внутреннего стиля Twigs. Ваш класс должен быть определен следующим образом:
class MyExtension extends \Twig_Extension {
После внесения этого изменения вы также можете удалить аргументы, установленные для этого класса, из модуля MODULE.services.yml
ссылка
Ответ 2
Я не видел этого в контексте Drupal, но, работая с другими платформами, использующими Twig, я видел похожие проблемы, возникающие при возникновении ошибки в начале процесса установки платформы.
Типичная последовательность событий такова:
- Платформа запускает свою загрузку; загрузка ядра CMS и т.д.
- В какой-то момент в начале этого процесса он попадает в ошибку.
- Затем он пытается отобразить страницу с ошибкой.
- Однако на странице с ошибкой используется шаблон Twig.
- Процесс запуска еще не загрузил все расширения ветки, используемые в шаблоне.
- Boom, вы получите сообщение об ошибке, в котором указана "неизвестная функция Twig" вместо реального сообщения об ошибке.
Когда у меня было это раньше, очень сложно диагностировать, что такое фактическая ошибка.
"Правильное" решение состояло в том, чтобы изменить шаблоны страниц ошибок, чтобы они были минимальными и не использовали какие-либо неосновные функции твига. Но если вы начнете крах в начале процесса загрузки страницы, это может быть сложно сделать на самом деле.
В первом случае я разрешил его, отладив систему и захватив данные, переданные в шаблон. Это показало мне, какова была настоящая ошибка. Устраняя эту ошибку, вы остановили ошибку ветки и позволили мне войти в систему.
Я не знаю точно, что то, что вы видите, это то же самое, что и то, что я видел, но это похоже на то, что я надеюсь, что это поможет.