2013-04-10 36 views
1

我有一个用Symfony2构建的网站,我想用jQuery手机创建一个移动版本(我目前使用的是Twitter桌面版Bootstrap)。手机网站和桌面网站:我必须复制我的代码吗?

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

  • 创建一个子域,例如:http://mobile.mywebsite.com并创建另一个Symfony的项目,这将是非常相似的,但只有等html.twig文件(整合jQuery手机),但这意味着我会重复我的代码的一大部分?

  • 媒体我symfony项目内查询到HTML文件根据屏幕大小使用jQuery Mobile的元素。因此,我只有一个项目需要维护。

任何意见将是巨大的!谢谢 !

+0

为什么要创建两个项目?您正在使用允许响应式用户界面的Twitter Bootstrap。为什么不改进你的Twitter Bootstrap CSS并调整你的Symfony2后端以使网站响应? – Lowkase 2013-04-10 13:19:09

+0

我在想,jQuery的移动提供了更多的可能性,如切换列表中的元素只是用手翻转等等...,它更像是一个原生应用 – Reveclair 2013-04-10 13:33:08

+0

它没有多大意义,这两个平台混合在一起,除非你将您的Symphony2架构构建为RESTFUL服务。如果Symphony2提供了很多视图,那么我就不会沿着jQuery移动路线走下去。将这两个平台糅合在一起会伤害一点。 – Lowkase 2013-04-10 13:42:14

回答

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 
    } 
    ... 
} 
2

最佳做法是一个负责任的设计创建一个页面(媒体查询是的那部分),可以适应任何屏幕尺寸。

你绝对不应该做第二个symfony项目。你基本上试图为你的网站制作2种不同的布局,所以它们只应该影响你的观点。如果您不想使用自适应设计,则可以为移动页面创建树枝模板,并从用于桌面站点的相同控制器加载这些模板。