1

我有一个使用 Symfony2 构建的网站,我想使用 jQuery mobile 创建它的移动版本(我目前正在使用 Twitter 引导程序作为桌面版本)。

我真的很困惑我必须选择的解决方案:

  • 创建一个子域,例如: http: //mobile.mywebsite.com并创建另一个非常相似的 Symfony 项目,但只有其他 html.twig 文件(用于集成 jQuery mobile),但这意味着我会复制一个大我的代码的一部分?

  • 我的 symfony 项目中的 html 文件中的媒体查询以根据屏幕大小使用 jquery 移动元素。因此,我只有一个项目需要维护。

任何建议都会很棒!谢谢 !

4

3 回答 3

2

最佳实践是创建一个具有响应式设计的页面(媒体查询是其中的一部分),可以适应任何屏幕尺寸。

你绝对不应该做第二个 Symfony 项目。您实际上是在尝试为您的网站制作 2 种不同的布局,因此它们只会影响您的视图。如果您不想使用响应式设计,您可以为您的移动页面创建 twig 模板,并从您用于桌面站点的相同控制器加载这些模板。

于 2013-04-10T13:35:22.537 回答
2

您可以根据域名进行路由:

http://symfony.com/doc/master/components/routing/hostname_pattern.html

有了这个,您可以为移动站点使用不同的控制器,但仍然可以重用您的模型和(至少部分)您的视图。您甚至可以通过在路由中设置参数(基于主机)然后在控制器中使用它来重用一些控制器:

# routing.yml

mobile_homepage:
    path:     /
    host:     m.{domain}
    defaults: { _controller: AcmeDemoBundle:Main:homepage, mobileVersion: true }
    requirements:
        domain: %domain%

homepage:
    path:  /
    defaults: { _controller: AcmeDemoBundle:Main:homepage }

然后在你的控制器中:

// Acme/DemoBundle/Controller/MainController.php

public function homepageAction($mobileVersion = false) {
  ...
  if ($mobileVersion) {
    // do some mobile things, perhaps return a specific template
  } else {
    // do some non-mobile things, perhaps return a specific template
  }
  ...
}
于 2013-04-10T14:36:55.333 回答
1

我知道这有点晚了,但它仍然可能对其他人有用。

今天早上我有同样的问题,谷歌给了我 MobileDetectBundle https://github.com/suncat2000/MobileDetectBundle/这似乎解决了这类问题。还没试过,但我肯定会的!

于 2014-01-14T17:32:07.547 回答