私はsymfony 3でキャッシュの問題を解決するために、すべてのアセットにパラメータとしてversionを導入しています。私は使用していますAsseticsymfony 3 - フレームワークがロードされる前にパラメータを設定する方法
# app/config/config.yml
parameters:
version: 'v1.0'
framework:
# ...
assets:
version: '%version%'
これはうまくいきます。しかし、問題は、いくつかのリリースを本番環境に展開するときに手動で毎回parameters.yml
を編集する必要があることです。だから私は自動的に生成される/これは、展開が発生するたびに更新する必要があります。
私が考えることの1つは、ファイルの最終変更に基づいてMD5文字列を生成することです。だから、私がバージョンを手に入れることができたと言うことができます。私はバージョンとパラメータを置き換えたいです。
CompilerPass
を使用して、version
パラメータを追加できます。
//AppBundle/AppBundle.php
use AppBundle\DependencyInjection\Compiler\Version;
class AppBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container); // TODO: Change the autogenerated stub
$container->addCompilerPass(new Version());
}
}
//AppBundle/DependencyInjection/Compiler/Version.php
namespace AppBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class Version implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$container->setParameter('version', uniqid());
}
}
uniqid()
を試験として加えた。しかし、このコードは "フレームワーク"設定が初期化された後に動作し、パラメータ "version"を追加します。このため、%version%
の "framework"ブロック状態では、パラメータを見つけることができません。
「フレームワーク」を初期化する前にこのパラメータを作成するにはどうすればよいですか?