Sf2:相同的网址,两个控制器,具体取决于设备

时间:2015-09-04 08:33:35

标签: symfony mobile routing

假设我们在

下有主页
http://foo.bar/

和处理它的控制器:

class HomepageController extends FooController{

    public function homepageAction()
    {
         (some stuff)
    }
}

主页只是桌面版,然后是RWD版。下一步是为桌面和移动设备编写单独的视图,并将它们连接起来(简化)。

class HomepageController extends FooController{

    public function homepageAction()
    {
         (some stuff)

         if(true === $this->detector->isMobile())
         {
             return new Response($this->renderView('homepage.mobile.html.twig' [
                     'some' => $vars',
                 ]
             ));
         }

         return new Response($this->renderView('homepage.mobile.html.twig' [
                 'some'    => $vars',
                 'only'    => $for,
                 'desktop' => $version,
             ]
         ));      
    }
}

现在是下一步 - 让主页的移动版在不同的控制器上运行。这是因为桌面版本获得了移动中不需要的大量数据,导致当前流量未得到优化。

所以,总结一下,条件:

  1. 移动探测器已经在项目中声明为服务,
  2. 主页地址与桌面版无法区别,
  3. 桌面版和移动版应该在不同的控制器上运行。
  4. 到目前为止,我发现的唯一解决方案是:  1.总是打桌面控制器,  2.首先要做的是检查请求是否来自移动设备,  3.如果是,则在内部转发给移动主页控制器。

    听起来不错,但我相信它可以做得更好!

    我还有另外两个关于如何做到这一点的理论,但我现在不想提出它们,所以没有人受到影响。

0 个答案:

没有答案