###前提・実現したいこと
ページアクセス時に、URLからサブドメインを切り出しグローバル変数config('global.subdomain')
に保持。routesやview等で利用したいと考えています。
###発生している問題
上記の処理をグローバルmiddlewareとして実装しましたが、routes内でconfig('global.subdomain')
を取得することができませんでした。どうやらroutesが先に走ってしまっているようです。
※こちらのサイトを見るとroutesより先に走るかと思ったのですが・・・
https://www.pupha.net/archives/3008/
グローバルmiddlewareではなくroutes内で設定すれば問題ありませんが、どうもスマートでは無い気がしています。
routesよりも前でグローバル変数を保持する良い方法はありますか?
###グローバルMiddlewareの登録方法
Http\Kernel.php
に下記のようにMiddlewareを登録しています。
php
1 protected $middleware = [ 2 \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 3 \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, 4 \App\Http\Middleware\TrimStrings::class, 5 \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, 6 \App\Http\Middleware\ForceSecure::class, 7 \App\Http\Middleware\Cors::class, 8 \App\Http\Middleware\SelectSubdomain::class, // ←ここを追加 9 ];
2017/11/30 12:50追記
routesは下記のようにwhereでconfigを使用しています。
php
1 Route::get('/{pref}/{area}', 'Search\TopController@searchArea') 2 ->name('customer.search.area') 3 ->where('pref',Config::get(config('global.subdomain') . '.const.pref')[0]);
2017/11/30 15:30追記
middlewareSelectSubdomain
のソースは下記の通りです。
php
1 public function handle($request, Closure $next) 2 { 3 // ドメインからサブドメインを取得 4 $domain = explode('.', $_SERVER['HTTP_HOST']); 5 $subdomain = $domain[0]; 6 7 // サブドメインをグローバル変数に保持 8 config(['global.subdomain' => $subdomain]); 9 10 return $next($request); 11 }
回答1件
あなたの回答
tips
プレビュー