La "brindille Erreur de Syntaxe' avec le message " Unknown "rendu" filtre

j'exécute drupal 8, composer et npm pour effectuer des tâches gulfp.

quand je lance npm start.. mon gestionnaire des tâches: j'obtiens la trace de pile suivante:

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

j'ai regardé installer twig-bridge / Symfony twig via composer mais je ne peux pas sembler de se débarrasser du message d'erreur.

est-ce que je laisse tomber en utilisant le filtre à brindilles "render"?


mise à jour: 14/08/17

j'ai également rencontré le même problème en essayant d'utiliser la fonction drupal_block fournie via le module twig_tweak de Drupal 8.

23
demandé sur yivi 2017-07-17 14:56:42

2 réponses

le problème dans le code ci-dessus est que votre classe D'extension de brindille étend la classe D'extension de brindille interne Drupal. Cela brise les extensions de brindilles ajoutées par le noyau Drupal et c'est pourquoi vous obtenez l'erreur.

pour corriger cela, vous devriez faire vos extensions de brindilles étendre la classe d'extension de brindilles internes. Votre classe doit être définie comme ceci:

class MyExtension extends \Twig_Extension {

après avoir fait ce changement, vous pouvez également supprimer les arguments cette classe du MODULE.service.yml

lien

2
répondu Maxim Strutinskiy 2017-10-27 13:17:10

Je n'ai pas vu cela dans le contexte Drupal, mais en travaillant avec d'autres plateformes qui utilisent Twig, j'ai vu des problèmes similaires se produire quand une erreur se produit au début du processus de configuration de la plateforme.

la séquence typique des événements est comme ceci:

  • la plate-forme commence à démarrer; chargement du CMS core, etc.
  • Au début de ce processus, il rencontre une erreur.
  • il tente alors pour afficher une page d'erreur.
  • cependant, la page d'erreur utilise un modèle de brindille.
  • le processus de démarrage n'a pas encore chargé toutes les extensions de brindilles utilisées dans le modèle.
  • Boom, vous obtenez une erreur de brindille indiquant "unknown Twig function" au lieu du vrai message d'erreur.

Quand j'ai eu cela avant, il s'est avéré très difficile à diagnostiquer quelle est l'erreur réelle.

Le "correct" la solution a été de modifier les gabarits de page d'erreur afin qu'ils soient minimes et n'utilisent aucune fonction de brindille non-core. Mais si vous obtenez un crash au début du processus de chargement de la page, il peut être difficile de le faire.

dans le premier cas, je l'ai résolu en déboguant le système et en piégeant quelles données ont été passées au modèle. Cela m'a montré ce qu'était l'erreur réelle . La résolution de cette erreur a ensuite arrêté l'erreur de brindille de se produire et a permis moi pour entrer dans le système.

je ne sais pas pour vous si ce que vous voyez est le même genre de chose que ce que je voyais, mais il ressemble donc j'espère que cela aidera.

0
répondu Simba 2017-10-27 13:34:35