そのためにLaravelのミドルウェアを使用できます。ミドルウェアは、リクエスト処理をラップするコード層であり、リクエストの処理前または処理後に追加のコードを実行できます。
まず、ミドルウェア クラスが必要です。目的のロジックを実行するhandle()というメソッドが 1 つ必要です。あなたの場合、次のようになります。
<?php namespace App\Http\Middleware;
use Auth;
use App;
class SetLang {
public function handle($request, Closure $next) {
if(empty($request->has('lan'))) {
if (Auth::user()) {
Auth::user()->language = $request->input('lan');
Auth::user()->save(); // this will do database UPDATE only when language was changed
}
App::setLocale($request->input('lan'));
} else if (Auth::user()) {
App::setLocale(Auth::user()->language);
}
return $next($request);
}
}
次に、ミドルウェアをApp\Http\Kernelクラスに登録して、リクエストごとに実行されるようにします。
protected $middleware = [
//here go the other middleware classes
'App\Http\Middleware\SetLang',
];
ミドルウェアの詳細については、http : //laravel.com/docs/master/middlewareのドキュメントを参照してください。