web-dev-qa-db-ja.com

どのようにリロードTwig Symfony 2のキャッシュ

Symfony 2フレームワークを使用して、PHPで開発されたアプリケーションがあります。HTMLファイルを変更しましたが、ページを更新しても変更は反映されません。

  1. サーバーを再起動しました。運がありません。

  2. /protected/cache/ページ自体からTwigフォルダーを削除しようとしました。これはロードされていません。

Twigキャッシュをリロードするにはどうすればよいですか?

ノート:

  • Tomcatサーバーを使用して展開しています。
  • サーバーでSymfony 2コマンドラインを構成していません。
  • 私はPHPが初めてです。
38
Azhar

最も簡単な方法は、コマンドを入力します:

rm -rf app/cache/*

ポイントは:app/cache/内のすべてのファイルは自由に削除でき、必要に応じて再生成されることです。

twig cacheのみをクリアしたい場合:

rm -rf app/cache/<environment>/twig

<environment>を要件に応じてdevprod、またはtestに置き換えます。

43
Alain Tiemblo

新しいTwig_Environmentインスタンスを作成するとき、コンストラクターの2番目の引数としてオプションの配列を渡すことができます。それらの1つはauto_reloadです。 Twigを使用して開発する場合、ソースコードが変更されるたびにテンプレートを再コンパイルすると便利です。 auto_reloadオプションの値を指定しない場合、debug値に基づいて自動的に決定されます。

auto_reloadtrueに設定します。

$twig = new Twig_Environment($loader, array('auto_reload' => true));

開発者向けのTwigのドキュメント: http://twig.sensiolabs.org/doc/api.html#environment-options

36
Link

同様の問題がありましたが、キャッシュフォルダーを削除してもテンプレートに影響はなく、理由もわかりません。現在私の問題を解決しているように見えるのは、config_dev.ymlにある次のコードです。

twig:
    cache: false

たぶんこれはあなたのための解決策でもあるので、常にコマンドを使用する必要はありません。

参照:

TwigBundleの設定

Twig環境オプション

13
Manuel

Opcache /他の同様のキャッシングを使用している場合、twigのキャッシュフォルダーを削除しても、twigキャッシュは.phpファイルのみで構成されます。twigのキャッシュフォルダーを削除してphpファイルを実行する必要があります含まれるもの:

opcache_reset();

3
j4r3k

Webフォルダーにあるapp.phpファイルを変更する必要があります。

変化する:

$kernel = new AppKernel('prod', false);    

に:

$kernel = new AppKernel('prod', true);

必要に応じてキャッシュをクリアします。

OPcacheを使用している場合は、必ずコメントアウトopcache.validate_timestamps=0開発環境で。

1
Nkoyan

次のような関数を追加できます。

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