Ich bin neu in PHP, ich habe eine Anwendung, die in PHP und im symfony2-Framework entwickelt wurde.
01. I restarted the server No luck.
02. I tried to remove the twig folder from /protected/cache/ page it self not loading.
Bitte beraten Sie, ich verwende den Tomcat-Server zum Bereitstellen.
Hinweis : Ich habe keine symfony2-Befehlszeile auf dem Server konfiguriert.
Der einfachste Weg, den Befehl einzugeben:
rm -rf app/cache/*
Der Punkt ist: Alle Dateien in app/cache/
können frei entfernt werden, sie werden bei Bedarf regeneriert.
Wenn Sie wirklich nur den Zweigcache löschen möchten:
rm -rf app/cache/<environment>/twig
Ersetzen Sie <environment>
durch dev
, prod
oder test
entsprechend Ihren Anforderungen.
Beim Erstellen einer neuen Instanz von Twig_Environment können Sie ein Array von Optionen als zweites Argument des Konstruktors übergeben. Eines davon ist auto_reload
. Beim Entwickeln mit Twig ist es hilfreich, die Vorlage immer dann neu zu kompilieren, wenn sich der Quellcode ändert. Wenn Sie keinen Wert für die auto_reload
-Option angeben, wird dieser automatisch anhand des debug
-Werts bestimmt.
Stellen Sie auto_reload
als true
ein:
$twig = new Twig_Environment($loader, array('auto_reload' => true));
Twigs Dokumentation für Entwickler: http://twig.sensiolabs.org/doc/api.html#environment-options
Ich hatte ein ähnliches Problem, aber das Löschen des Cache-Ordners hatte keine Auswirkungen auf meine Vorlage und ich weiß nicht warum. Was mein Problem jetzt zu lösen scheint, ist der folgende Code in meiner config_dev.yml:
twig:
cache: false
Vielleicht ist dies auch eine Lösung für Sie, so dass Sie den Befehl nicht ständig verwenden müssen.
Verweise:
Wenn Sie Opcache/ähnliches Caching verwenden, werden beim Löschen des Cache-Ordners von twig keine Vorlagen aktualisiert, da der Twig-Cache nur aus .php-Dateien besteht .. _.
opcache_reset ();
Sie müssen einige Änderungen an der Datei app.php im Webordner vornehmen.
Veränderung:
$kernel = new AppKernel('prod', false);
zu:
$kernel = new AppKernel('prod', true);
und löschen Sie den Cache, wenn Sie möchten.
Wenn Sie OPcache verwenden, müssen Sie unbedingt opcache.validate_timestamps=0
in der dev-Umgebung auskommentieren.
sie können eine Funktion wie folgt hinzufügen:
public function renderView($view, array $parameters = array())
{
$loader = new \Twig_Loader_Filesystem($this->container->getParameter("template_path"));
$twig = new \Twig_Environment($loader, array('auto_reload' => true,
'cache' => false
));
/////////////////////add a translate filter///////////////////////
$getTextdomain = new \Twig_SimpleFilter('trans',function ($string){
return $this->container->get('translator')->trans($string);
});
$twig->addFilter($getTextdomain);
//////////////////////////////////////////////////////////////////
///////////////////////////Add an extension twig//////////////////
$twig->addExtension(new Extension());
//////////////////////////////////////////////////////////////////
return $twig->render($view, $parameters);
}