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

Send to another controller when user is from opera mini

我用 Symfony2 开发了一个网站。我正在使用 Suncat MobileDetectBundle 来检测用户是来自移动设备还是 PC。我必须为桌面、smartphones 和基于 Java 的 phones 创建 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
    }

当用户来自 smartphone 时,它将呈现存在于 'Android/Default' 文件夹中的模板,当他来自计算机时,显示来自 'Default' 文件夹的模板。

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

我想做的是检查用户何时来自 java 基于 phone、Opera mini 或 ucweb,然后执行 JavaController 以及何时用户来自smartphone 或者 Desktop 然后执行 DefaultController

要知道 phone 是否为 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
    }

或使用另一个动作来检测移动设备,然后 OS 转发到您需要的任何动作控制器,默认控制器或 java 控制器