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

时间:2015-03-23 03:37:17

标签: php symfony

我在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 /默认”文件夹中,当他来自计算机时,会显示“默认”文件夹中的模板。

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

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

1 个答案:

答案 0 :(得分:2)

要知道手机是否为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操作)