web-dev-qa-db-fra.com

Comment recharger le cache de brindilles dans symfony2

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.

35
Azhar

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.

39
Alain Tiemblo

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

36
Link

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:

Configuration TwigBundle

Options d'environnement Twig

12
Manuel

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 ();

3
j4r3k

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.

1

Si vous utilisez OPcache, veillez à commenter opcache.validate_timestamps=0 dans un environnement dev.

0
Nkoyan

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);
}
0
Themer