手机通过应用和互联网,正席卷世界。暂且不论响应式布局,网站也对移动设备进行着各种特殊适配。

本文我们介绍MobileDetectBundle,用于帮你侦测用户的移动设备,并将其跳转到与之适配的页面。安装后,只需设置配置信息中的常规选项:比如要将移动用户跳转至网站的m二级域名。

1
2
3
4
5
6
7
8
# app/config/config.yml
mobile_detect:
    redirect:
        mobile:
            is_enabled: true
            host: http://m.example.com
            action: redirect
        detect_tablet_as_mobile: true

官方文档中包括了更为复杂的跳转场景。

除了重定向手机用户外,这bundle还提供了一个mobile_detector服务,允许你获取设备类型、操作系统甚至品牌:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$device = $this->get('mobile_detect.mobile_detector');
 
// basic device detection 基本探测
$device->isMobile();
$device->isTablet();
 
// fine-grained device detection 精细探测
$device->isIphone();
$device->isIpad();
$device->isSamsung();
 
// device operating system 操作系统
$device->isIOS();
$device->isAndroidOS();

而且所有方法都可以在Twig模板中通过相同的函数使用:

1
2
3
4
5
6
7
8
9
{% extends is_mobile() ? 'mobile/layout.html.twig': 'layout.html.twig' %}
 
{% if is_android_os() %}
    Download our application from the store.
{% endif %}
 
{% if is_device('samsung') %}
    Thinking about buying an iPhone? Check out our deals!
{% endif %}

关于bundle作者

Nikolay Ivlev,来自俄罗斯联邦莫斯科的Symfony开发者。

我们在寻找下一个bundle

你有任何尚未在社区叫响的Symfony有用bundle的线索吗?发送邮件至:javier.eguiluz@sensiolabs.com