概要
Laravelには静的なファイルへのURLを生成するasset
というヘルパー関数が存在し、
普通に使うとWEBサーバーと同じ場所(オリジン)でパスを生成してくれます。
{{asset('css/style.css')}}
↓
https://www.example.com/css/style.css
しかし大規模なサービスの場合、静的なファイルはCDNを使って別の場所から配信していたりすると思います。
その場合asset
ヘルパーが使えないので、別途方法を考える必要があります。
色々方法はあるみたいですが、
今回は、カスタムディレクティブを使ってそれを実現してみました。
修正
app/Providers/AppServiceProvider.php
public function boot()
{
// ...
//静的ファイルURL生成
Blade::directive('asset', function($path){
return "<?php echo app('url')->assetFrom(config('app.asset_url'), $path); ?>";
});
}
config/app.php
return [
// ...
'asset_url' => env('APP_ASSET_URL'),
// ...
];
.env
APP_ASSET_URL=https://asset.example.com
使い方
@asset('css/style.css')
↓
https://asset.example.com/css/style.css
カスタムディレクティブなので{{
と}}
は使いませんが、
もともとのasset
ヘルパーと近い使用感で使えると思います。