【Laravel】すべてのViewでモバイル判定変数を使う



LaravelですべてのViewで使えるモバイル判定変数を作成する方法です。


とても簡単で以下の3ステップで行えます。

①モバイル判定するMiddlewareを作成
②Kernel.phpにMiddlewareを登録
③viewで使用



①モバイル判定するMiddlewareを作成

app/Http/Middleware配下に適当な名前でMiddlewareを作成します。
ここではGetIsMobile.phpとしてみます。
中身は以下になります。

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\View;

class GetIsMobile
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $isMobile = false;
        $user_agent =  $request->header('User-Agent');
        if ((strpos($user_agent, 'iPhone') !== false)
            || (strpos($user_agent, 'iPod') !== false)
            || (strpos($user_agent, 'Android') !== false)) {
            $isMobile = true;
        }
        View::share('isMobile', $isMobile);
        return $next($request);
    }
}





②Kernel.phpにMiddlewareを登録

Kernelに Middlewareを登録します。
場所はapp/Http/配下にあります。

protected $middleware = [
    ~略~
    \App\Http\Middleware\GetIsMobile::class,  //追加
];




③viewで使用

@if($isMobile)
     //モバイルだけで行う処理
@endif


@if(!$isMobile)
     //モバイル以外だけで行う処理
endif






以上になります。

コメント

タイトルとURLをコピーしました