2016-04-28 11 views
0

ich diesen Zweig Erweiterung für eine silex basierte Website haben zu laden:Zweig Erweiterung scheint Versuch zu verursachen nicht vorhandene Cache-Datei

<?php 
namespace UT\Provider; 

/** 
* Twig extension for containing any additional twig functions we need 
*/ 
class TwigUTProvider extends \Twig_Extension { 

    public function getName() { 
     return 'ut_functions'; 
    } 

    public function getFunctions() { 
     return [ 
      new \Twig_SimpleFunction("maybeDecodeJapanse", [$this, \UT\Provider\TwigUTProvider::maybeDecodeJapanse()]), 
     ]; 
    } 

    public function maybeDecodeJapanse() { 
     return 'a string'; 
    } 
} 

Welche registriert ist in der Anwendungsdatei wie folgt aus:

$this->register(new Provider\TwigServiceProvider, [ 
      'twig.path' => [ 
       __DIR__ . '/Resources/Templates', 
       $this['docroot'] . '/silex/vendor/braincrafted/bootstrap-bundle/Braincrafted/Bundle/BootstrapBundle/Resources/views/Form', 
       __DIR__ . '/../Floso/Templates', 
      ], 
      'twig.options' => [ 
       'auto_reload' => true, 
       'cache' => $this['debug_mode'] ? false : ($this['docroot'] . '/silex/var/cache/twig'), 
       'debug' => $this['debug_mode'], 
      ], 
     ]); 

     # Add Twig extensions 
     $this['twig'] = $this->share($this->extend('twig', function ($twig) { 
      $twig->addExtension(new \UT\Provider\TwigUTProvider()); 
      $twig->addExtension(new BootstrapBundle\Twig\BootstrapIconExtension('glyphicon')); 
      $twig->addExtension(new BootstrapBundle\Twig\BootstrapLabelExtension); 
      $twig->addExtension(new BootstrapBundle\Twig\BootstrapBadgeExtension); 
      $twig->addExtension(new BootstrapBundle\Twig\BootstrapFormExtension); 
      $twig->addExtension(new \Twig_Extension_StringLoader()); 

      $twig->getExtension('core')->setTimezone('Europe/London'); 

      return $twig; 
     })); 

Das scheint richtig zu sein - das Einführen von Mispelling in den Namen der Erweiterungsklasse verursacht eine andere Ausnahme als die, mit der ich festhalte.

Ich nenne diese Erweiterung in meinem Zweig Vorlagen mit {{ maybeDecodeJapanese() }}, die diese Ausnahme verursacht (es scheint nicht von der Vorlage nennen sich verursacht, Mispelling es eine Standardfunktion erzeugt nicht gefunden Ausnahme):

Class '__TwigTemplate_3318c38dfd9c3eb0c4193184a517ff94fdd975ffb45d7f0a8f7490718f3bc1ef' not found 

Dies geschieht in /silex/vendor/twig/twig/lib/Twig/Environment.php

Meine beste Vermutung ist, dass dies eine Cache-Datei von irgendeiner Art ist. Caching ist in der Entwicklungsumgebung deaktiviert, aber ich habe versucht, den Cache-Ordner-Inhalt trotzdem zu löschen, was nicht geholfen hat. Googling hat noch keine weiteren Hinweise.

Jede Hilfe bei der Suche nach der Quelle des Problems wäre sehr hilfreich.

+0

Beachten Sie, dass Sie wahrscheinlich ein 'e' in' Japanse' vergessen haben. –

Antwort

2

Ich denke, dass es einen Fehler in der Funktionsdefinition gibt. Versuchen Sie, es zu ändern:

...new \Twig_SimpleFunction("maybeDecodeJapanse", [$this, "maybeDecodeJapanse"]),... 
+0

es funktioniert! Das hat mich den ganzen Nachmittag verrückt gemacht. Vielen Dank! –