Symfony 2フレームワークを使用して、PHPで開発されたアプリケーションがあります。HTMLファイルを変更しましたが、ページを更新しても変更は反映されません。
サーバーを再起動しました。運がありません。
/protected/cache/
ページ自体からTwigフォルダーを削除しようとしました。これはロードされていません。
Twigキャッシュをリロードするにはどうすればよいですか?
ノート:
最も簡単な方法は、コマンドを入力します:
rm -rf app/cache/*
ポイントは:app/cache/
内のすべてのファイルは自由に削除でき、必要に応じて再生成されることです。
twig cacheのみをクリアしたい場合:
rm -rf app/cache/<environment>/twig
<environment>
を要件に応じてdev
、prod
、またはtest
に置き換えます。
新しいTwig_Environmentインスタンスを作成するとき、コンストラクターの2番目の引数としてオプションの配列を渡すことができます。それらの1つはauto_reload
です。 Twigを使用して開発する場合、ソースコードが変更されるたびにテンプレートを再コンパイルすると便利です。 auto_reload
オプションの値を指定しない場合、debug
値に基づいて自動的に決定されます。
auto_reload
をtrue
に設定します。
$twig = new Twig_Environment($loader, array('auto_reload' => true));
開発者向けのTwigのドキュメント: http://twig.sensiolabs.org/doc/api.html#environment-options
同様の問題がありましたが、キャッシュフォルダーを削除してもテンプレートに影響はなく、理由もわかりません。現在私の問題を解決しているように見えるのは、config_dev.ymlにある次のコードです。
twig:
cache: false
たぶんこれはあなたのための解決策でもあるので、常にコマンドを使用する必要はありません。
参照:
Opcache /他の同様のキャッシングを使用している場合、twigのキャッシュフォルダーを削除しても、twigキャッシュは.phpファイルのみで構成されます。twigのキャッシュフォルダーを削除してphpファイルを実行する必要があります含まれるもの:
opcache_reset();
Webフォルダーにあるapp.phpファイルを変更する必要があります。
変化する:
$kernel = new AppKernel('prod', false);
に:
$kernel = new AppKernel('prod', true);
必要に応じてキャッシュをクリアします。
OPcacheを使用している場合は、必ずコメントアウトopcache.validate_timestamps=0
開発環境で。
次のような関数を追加できます。
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);
}