Пакет 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"