今回はlaravelのViewで使うことができOSで処理を切り分けることができる方法をご紹介します。
例えばスマホであれば、文字を小さくしたり
PCであれば文字を大きくするといったこともできます。
スマホ判定変数を使う方法は、以下の3ステップで行うことができます。
- スマホ判定Middlewareを作成
- Kernel.phpに作成したスマホ判定Middlewareを登録
- Viewで使用する
スマホ判定Middlewareを作成
app/Http/Middleware配下にスマホ判定のMiddlewareを作成します。
今回はGetOs.phpとしました。
GetOs.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\View;
class GetOs
{
public function handle($request, Closure $next)
{
$mobile = false;
$user_agent = $request->header('User-Agent');
if ((strpos($user_agent, 'iPhone') !== false)
|| (strpos($user_agent, 'iPod') !== false)
|| (strpos($user_agent, 'Android') !== false)) {
$mobile = true;
}
View::share('mobile', $mobile);
return $next($request);
}
}
簡単に解説をすると、アクセスしてきたヘッダーのUser-Agentを変数に入れています。
この中にはiPhone、iPod、Androidでアクセスした結果が入っているので
その後に条件分岐で判定をしています。
最後のView::shareはページ全体で使用することができる変数となっており
コントローラ等で記述をしなくても$mobileの変数を使用することができます。
Kernel.phpに作成したスマホ判定Middlewareを登録
次にKernel.phpに先ほど作成したスマホ判定のMiddlewareを登録しましょう!
場所はapp/Http/配下にあります。
Kernel.php
protected $middleware = [
\App\Http\Middleware\GetOs::class,
];
Viewで使用する
ここまでするとどのページでもOSを判定することができます。
blede
@if($mobile)
//モバイルだけで行う処理
@endif
@if(!$mobile)
//モバイル以外だけで行う処理
endif
まとめ
今回はモバイルを判定する関数を作成して
実際にViewで使用するところまで解説をしました。
すぐにできるので、困った際はこちらの記事を参考にして
開発を進めてみてください。
ここまでみてくださりありがとうございました!