Je suis nouveau dans PHP, j'ai une application développée dans PHP et dans le framework symfony2 .
01. I restarted the server No luck.
02. I tried to remove the twig folder from /protected/cache/ page it self not loading.
Veuillez conseiller, j'utilise le serveur Tomcat pour déployer.
Remarque : La ligne de commande symfony2 n'est pas configurée sur le serveur.
La manière la plus simple, tapez la commande:
rm -rf app/cache/*
Le fait est que tous les fichiers dans app/cache/
peuvent être supprimés librement, ils sont régénérés au besoin.
Si vous voulez vraiment effacer uniquement le cache twig:
rm -rf app/cache/<environment>/twig
Remplacez <environment>
par dev
, prod
ou test
en fonction de vos besoins.
Lors de la création d'une nouvelle instance Twig_Environment, vous pouvez transmettre un tableau d'options en tant que second argument du constructeur. L'un d'eux est auto_reload
. Lors du développement avec Twig, il est utile de recompiler le modèle chaque fois que le code source change. Si vous ne fournissez pas de valeur pour l'option auto_reload
, elle sera automatiquement déterminée en fonction de la valeur debug
.
Définissez auto_reload
sur true
:
$twig = new Twig_Environment($loader, array('auto_reload' => true));
La documentation de Twig pour les développeurs: http://twig.sensiolabs.org/doc/api.html#environment-options
J'ai eu un problème similaire, mais la suppression du dossier de cache n'a eu aucun impact sur mon modèle et je ne sais pas pourquoi. Ce qui semble résoudre mon problème maintenant, c'est le code suivant dans mon fichier config_dev.yml:
twig:
cache: false
C'est peut-être aussi une solution pour vous, de sorte que vous n'avez pas besoin d'utiliser la commande tout le temps.
Références:
Si vous utilisez opcache/une autre mise en cache similaire, la suppression du dossier de cache de twig n'actualise pas les modèles car le cache de twig ne contient que des fichiers .php .
opcache_reset ();
Vous devez apporter quelques modifications au fichier app.php situé dans le dossier Web.
Changement:
$kernel = new AppKernel('prod', false);
à:
$kernel = new AppKernel('prod', true);
et effacez le cache si vous voulez.
Si vous utilisez OPcache, veillez à commenter opcache.validate_timestamps=0
dans un environnement dev.
vous pouvez ajouter une fonction comme celle-ci:
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);
}