Quantcast
Channel: Laravel News
Viewing all articles
Browse latest Browse all 1790

Desktop and Mobile User Agent Parser

$
0
0

Desktop and Mobile User Agent Parser


The jenssegers-agent package is a desktop/mobile user agent parser with support for Laravel, based on MobileDetect. You can use this package in any PHP application, and it also provides a Laravel service provider, giving you a service Facade:

use Jenssegers\Agent\Facades\Agent;

Agent::is('Firefox');
Agent::is('iPhone');

// Magic methods
Agent::isFirefox();
Agent::isIPhone();

// Device type
Agent::isDesktop();
Agent::isMobile();
Agent::isTablet();
Agent::isPhone();

Besides user agent helpers, the Agent service provides a language helper, device name method, platform, and more. For example, you could get the accepted browser languages using the following method:

Agent::languages(); // ['en-us', 'en']

Using the languages method, you could set the locale during a request in a middleware. Here's a simple example just to illustrate just off the top of my head:

public function handle(Request $request, Closure $next): Response
{
    $supported_locales = ['en', 'es'];
    $user_locales = Agent::languages();

    foreach ($user_locales as $locale) {
        if (in_array($locale, $supported_locales)) {
            app()->setLocale($locale);
        }
    }

    return $next($request);
}

If you do not support the locale, the config('app.fallback_locale') setting will define the locale. You might also use the languages() method in middleware to redirect a locale-specific route prefix /{locale}/ based on the user agent's supported language.

Route::prefix('/{locale}')->group(function () {
    // ...
})->whereIn('locale', ['en', 'es']);

The Agent service can also determine if the current user agent is a bot and what type of bot:

// Is the user a bot?
Agent::isRobot(); // bool

// get the robot name
Agent::robot();

Lastly, to get the device name, platform, and browser, you can use the aptly named methods on the facade:

Agent::device(); // "Macintosh"
Agent::platform(); // "OS X"
Agent::browser(); // "Safari"

The post Desktop and Mobile User Agent Parser appeared first on Laravel News.

Join the Laravel Newsletter to get Laravel articles like this directly in your inbox.


Viewing all articles
Browse latest Browse all 1790

Trending Articles