やりたいこと
ユーザーエージェントがSPだったらトップページへリダイレクトしたい
コード
Middlewareの基本的な使い方はこちらをご覧ください。
app/Http/Middleware/SampleRedirect.php
public function handle($request, Closure $next)
{
$ua = $_SERVER['HTTP_USER_AGENT'];
//spの場合
if((strpos($ua, 'Android') !== false) && (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'iPhone') !== false) || (strpos($ua, 'Windows Phone') !== false)) {
return redirect('/');
}
return $next($request);
}
app/Http/Kernel.php
protected $routeMiddleware = [
'sampleRedirect' => \App\Http\Middleware\SampleRedirect::class,
];
web.php
Route::match(['get', 'post'], '/abcd/', 'sampleController@mainMethod')->middleware('sampleRedirect');
上記のように書いた場合、/abcd/
にアクセスがあった際、sampleController.phpのmainMethod
の処理をする前にSampleRedirect.phpのhandle
の処理をします。
リダイレクトする条件以外の場合はそのままsampleController.phpのmainMethod
が処理されます。
Middlewareに書くことでルーティングファイルがすっきりし、汎用的に利用でき、リクエストが処理された後に何かしたいという場合にも使えるため、便利だと思います。