Отправить на другой контроллер, когда пользователь из Opera Mini

0

Я разработал веб-сайт в Symfony2. Я использую Suncat MobileDetectBundle для определения, есть ли у пользователя мобильный или ПК. Мне нужно создать 3 отдельные версии для настольных компьютеров, смартфонов и телефонов на основе Java. У меня есть 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", а когда он с компьютера, отобразятся шаблоны из папки "Default".

Теперь у меня есть еще один контроллер, "JavaController", в котором у меня будет код для отображения на Java-телефонах.

Что я хочу сделать, это проверить, когда пользователь находится на Java-телефоне, в Opera mini или ucweb, затем выполняет JavaController, а когда пользователь со смартфона или рабочего стола, то выполните DefaultController

  • 0
    Я не понимаю вашего вопроса: вам нужно визуализировать другую страницу или вам нужно выполнить другое действие? Кроме того, вам нужно изменить URL или нет?
  • 0
    Мне нужно выполнить другое действие. У меня есть отдельные контроллеры для мобильных и ПК. Я могу легко проверить в контроллере, является ли пользователь мобильным или нет, но я должен проверить это перед запуском контроллера. Изменение URL не имеет большого значения, но это хорошо, если пользователь с мобильного телефона, то он перенаправляется на m.sitename.com
Теги:

1 ответ

2
Лучший ответ

Чтобы узнать, есть ли у телефона Android, вы можете использовать:

extends \Mobile_Detect {}

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

Suncat расширяет библиотеку mobile_detect, у которой есть много проверок, поскольку AndroidOS проверяет IOS и т.д., Поэтому вы можете использовать это.

Редактировать:

Теперь я понимаю, что вы можете использовать этот indexAction и определить, является ли он андроидом с помощью этого кода:

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

  • 0
    Да, я могу легко проверить в контроллере, является ли пользователь мобильным или нет, но мне нужно проверить это перед началом выполнения контроллера. Мне нужно выполнить другое действие. У меня есть отдельные контроллеры для мобильных и ПК.
  • 1
    @ user3785533 Я отредактировал свой ответ, чтобы удовлетворить ваши потребности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню