• Время чтения ~1 мин
  • 08.10.2023

Пакет jenssegers-agent представляет собой парсер агентов пользователей для настольных/мобильных устройств с поддержкой Laravel, основанный на MobileDetect. Вы можете использовать этот пакет в любом PHP-приложении, и он также предоставляет поставщика сервиса Laravel, предоставляя вам сервис Фасад:

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();

Помимо помощников агента пользователя, сервис агента предоставляет помощник по языку, метод имени устройства, платформу и многое другое. Например, вы можете получить приемлемые языки браузера с помощью следующего метода:

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

Используя метод languages, вы можете установить локаль во время запроса в промежуточном ПО. Вот простой пример, просто чтобы проиллюстрировать это:

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);
}

Если вы не поддерживаете локаль, config('app.fallback_locale') настройка определит локаль. Вы также можете использовать этот languages() метод в ПО промежуточного слоя для перенаправления префикса /{locale}/ маршрута, зависящего от языкового стандарта, на основе языка, поддерживаемого агентом пользователя.

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

Сервис Agent также может определить, является ли текущий агент пользователя ботом и какого типа бота:Наконец, чтобы получить имя устройства, платформу и браузер, вы можете использовать методы с меткими именами на фасаде:

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

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

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

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297