すべてのリクエストでモジュールアセットをリロードするようにYii2を強制する方法はありますか?
質問
私のウェブサイトは別々のモジュールに分かれています。すべてのモジュールには、特定のCSSまたはJSファイルが独自のCSSファイルまたはJSファイルです。
YiiのAssetManager私が最初に私の資産を使用するページを開くとフォルダが作成されます。
残念ながら私のファイルで何かを変更した場合、Yii 1.xはCSSファイルまたはJSファイルをリロードしません。
私は手動でWeb / Assetsフォルダを削除する必要があります。あなたがアプリを開発しているとき、それは本当に厄介です。
バックエンドフォルダにモジュールを追加すると機能しますが、自分のネームスペースを使用してベンダーフォルダにモジュールを作成している場合は機能しません。
解決
assetManager
を使用したYII1.xでは、設定ファイル
...すでに公開されていても、資産ファイルとディレクトリをコピーする 前。このプロパティは開発段階でのみ使用されます。
Forcecopyのドキュメントを参照してください。P>
代わりに、ファイルをコピーしないが、資産ファイルとAssetsディレクトリの間にソフトリンクを作成することができます。もちろん使用できません。
これをyii 2.xにあると仮定している質問の2番目の部分では、Assetbundlesを使用することになっています、あなたはどこからでもネームスペースバンドルを登録することができます、あなたは単にこのようなものと共にそれを登録するだけです
use vendor\myVendorName\myPackageName\assets\AppAsset;
AppAsset::register($this);
. 他のヒント
YII2では、このような資産のURLにタイムスタンプを追加することができます...
return [
// ...
'components' => [
'assetManager' => [
'appendTimestamp' => true,
],
],
];
.
資産はすべてのリクエストをリロードするようにされませんが、資産ファイルが変更されるたびに、TimestampのためにURLが変わります&それは資産を再公開するように強制されます。
forceCopy = true
を設定できます。
class Assets extends AssetBundle{
public function init()
{
parent::init();
$this->publishOptions['forceCopy'] = true;
}
}
.