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