当用户来自opera mini时,发送到另一个控制器


Send to another controller when user is from opera mini

我在Symfony2中开发了一个网站。我使用Suncat MobileDetectBundle来检测用户是来自手机还是PC。我必须为台式机、智能手机和基于Java的手机创建3个独立的版本。我有一个DefaultController,代码如下

    public function indexAction()
    {
    $mobileDetector = $this->get('mobile_detect.mobile_detector');
    if($mobileDetector->isMobile())
    $render='AcmeUitBundle:Android:Default/';
    else
     $render='AcmeUitBundle:Default:';
    //More Code goes here
    }

当用户来自智能手机时,它将呈现"Android/Default"文件夹中存在的模板,当他来自Computer时,将显示"Default"文件夹中的模板。

现在我有了另一个控制器"JavaController",在其中我将为基于Java的手机显示代码。

我想做的是检查用户何时来自基于java的手机、Opera mini或ucweb,然后执行JavaController,当用户来自智能手机或桌面时,然后执行DefaultController

要知道手机是否是android,您可以使用:

extends 'Mobile_Detect {}
if($this->is('AndroidOS')){
}

Suncat扩展了mobile_detect库,该库有很多检查,如AndroidOS检查IOS等。所以你可以使用它。

编辑:

我现在更好地理解了,你可以使用这个indexAction并检测它是否是android的代码:

if($mobileDetector->isMobile()){
   if(mobileDetector->is('AndroidOS')){
       return $this->forward('YourBundle:Java:index'); //this is your bundle name your controller name then your action name.
    }
    $render='AcmeUitBundle:Android:Default/';
 }
 else
     $render='AcmeUitBundle:Default:';
    //More Code goes here
    }

或者使用另一个操作来检测移动设备和哪个操作系统,然后将其转发到您需要的任何操作控制器——默认的一个或java一个