Laravel PHP プログラミング

【laravel】スマホ判定変数を使う方法

スマホ判定

 

今回はlaravelのViewで使うことができOSで処理を切り分けることができる方法をご紹介します。

例えばスマホであれば、文字を小さくしたり

PCであれば文字を大きくするといったこともできます。

スマホ判定変数を使う方法は、以下の3ステップで行うことができます。

 

  1. スマホ判定Middlewareを作成
  2. Kernel.phpに作成したスマホ判定Middlewareを登録
  3. 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で使用するところまで解説をしました。

すぐにできるので、困った際はこちらの記事を参考にして

開発を進めてみてください。

ここまでみてくださりありがとうございました!

 

-Laravel, PHP, プログラミング