php - template - twig simplefunction




'Twig_Error_Syntax' con il messaggio 'Unknown "render" filter (2)

Sto eseguendo drupal 8, compositore e npm per eseguire i compiti di gulp.

Quando eseguo npm start .. il mio task manager: ottengo la seguente traccia dello stack:

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

Ho cercato di installare twig-bridge / symfony twig via compositore ma non riesco a liberarmi del messaggio di errore.

Mi butto semplicemente usando il filtro "render" del ramoscello?

Aggiornamento: 14/08/17

Ho anche avuto lo stesso problema quando provavo ad usare la funzione drupal_block fornita tramite il modulo twig_tweak di Drupal 8.


Il problema nel codice sopra è che la tua classe di estensione Twig sta estendendo la classe di estensione Drupal Twig interna. Questo rompe le estensioni Twig aggiunte da Drupal core ed è per questo che stai ricevendo l'errore.

Per risolvere questo problema, devi estendere le estensioni Twig estendendole alla classe di estensione Twig interna di Twig. La tua classe dovrebbe essere definita in questo modo:

class MyExtension extends \Twig_Extension {

Dopo aver apportato questa modifica, puoi anche rimuovere gli argomenti impostati per quella classe da MODULE.services.yml

drupal.stackexchange.com/questions/184184/…


Non ho visto questo nel contesto di Drupal, ma lavorando con altre piattaforme che usano Twig, ho visto problemi simili che si verificano quando si verifica un errore nelle prime fasi del processo di installazione della piattaforma.

La sequenza tipica degli eventi è come questa:

  • La piattaforma inizia a eseguire il suo avvio; caricamento del core CMS, ecc.
  • Ad un certo punto all'inizio di questo processo, ha un errore.
  • Quindi tenta di visualizzare una pagina di errore.
  • Tuttavia, la pagina di errore utilizza un modello Twig.
  • Il processo di avvio non ha ancora caricato tutte le estensioni ramoscello utilizzate nel modello.
  • Boom, si ottiene un errore di ramatura che indica "la funzione di Twig sconosciuta" invece del vero messaggio di errore.

Quando ho avuto questo prima, si è rivelato molto difficile da diagnosticare quale sia l'errore reale.

La soluzione "corretta" è stata quella di modificare i modelli di pagina di errore in modo che siano minimi e non utilizzare alcuna funzione di ramificazione non core. Ma se si verifica un arresto precoce nel processo di caricamento della pagina, può essere difficile farlo effettivamente.

Nel primo caso, l'ho risolto eseguendo il debug del sistema e intrappolando i dati passati al modello. Questo mi ha mostrato quale fosse il vero errore. Risolvendo quell'errore, si è fermato l'errore di ramoscello e mi ha permesso di entrare nel sistema.

Non so per certo se quello che stai vedendo è lo stesso tipo di cosa che stavo vedendo, ma sembra simile, quindi spero che ciò possa aiutarti.