【问题标题】:Zend Framework: How do I utilize MVC for our mobile websiteZend Framework:如何将 MVC 用于我们的移动网站
【发布时间】:2011-08-18 14:40:13
【问题描述】:

好的,我已经开始在线订购了,它是一个我称之为“olo”的模块。我现在需要的是建立一个我们的网站的移动版本,完全不同的布局和设计。

现在,我如何利用 MVC 的力量,我一开始就被卖掉了?

我想使用我已经在 OLO 模块中创建的所有不同的控制器类。

现在我已经开始开发我们的移动网站,它被放置在另一个名为“移动”的模块中。它是用 jQuery Mobile 构建的,我已经完成了很多工作;信息页面、联系表格等。

目前所有移动设备都重定向到domain.tld/m.htacces mobile dectection。如果从移动版本链接到,这样做是为了支持完整的网站视图。

【问题讨论】:

    标签: model-view-controller zend-framework design-patterns


    【解决方案1】:

    就个人而言,我会使用前端控制器插件。在我关心的过程中,在引导程序中执行此操作有点太早了。

    编写一个挂钩 preDispatch() 的插件,并使用 Zend_Http_UserAgent 来查找应用程序是否正在通过移动设备访问。然后你可以set view script path 到另一个目录。例如,假设 default 是您当前的视图目录,mobile 是您的新视图目录。您只需克隆结构并修改文件,它应该可以解决问题:)

    application/
      modules/
        olo/
          controllers/
          modules/
          views/
             scripts/
               default/
               mobile/
    

    【讨论】:

    • 好吧,我可能应该提到这一点,但我有一个 .htaccess mobile detection 将所有移动设备重定向到 domain.tld/m 和一个处理 /m 和所有子路径的 routes.ini 文件。但是您对脚本目录中不同目录的评论可能很有用。
    • 您也可以使用路由器进行匹配(不记得确切的方法,明天会更新答案)。这样你的所有控制器和模型都保持不变,正如 ArtWorkAD 所说,只有布局发生了变化。也看看他的建议,使用 wurfl 也不错。将来你会遇到更少的问题,因为你不必为普通版和移动版编写两次升级,因为逻辑保持不变:)
    • 我已经接受了@ArtWorkAD 的回答,但您的回答也很有帮助 - 有 som rep :)
    【解决方案2】:

    随着Zend Framework 1.11,zend 引入了基于Zend_Http_UserAgentwurfl adapter

    它允许您检测移动设备并引导不同的布局。 youtube 上有一个 HOW TO 随 2010 年 12 月的 zend 时事通讯一起提供:http://www.youtube.com/watch?v=_A8yg73tqOY

    您不必使用不同的模块!只是布局文件不同!

    【讨论】:

    • 据我所知,您的方式是可行的。如果我想给移动用户一个指向我们非移动网站的链接,这可以通过 wurfl 设置来完成吗?
    • 是的,你可以在页脚的某处提供一个简单的链接,它可能使用 zend 注册表设置一个标志,并在你检查移动设备的地方检查这个标志,dotkernel.com/dotkernel/disable-automatic-wurfl-redirect
    • 很好,这很有趣。我不确定我现在是否会使用它,我认为需要对现有代码进行大量重写。我现在需要把这件事做好,CEO们总是需要昨天完成的事情——你知道:)
    • 对于像 contextSwitch 动作助手这样的高级视图/布局切换,我在 WURFL 的帮助下写了一篇短文:juriansluiman.nl/en/article/111/…
    【解决方案3】:

    就像 ArtWorkAD 所说,您可以在 Zend Framework 1.11 中使用 wurfl 适配器,该适配器允许您检测用户代理并切换布局,但这意味着您的每个视图都需要“通用”。到目前为止,我从来没有这么“普遍”的看法。

    可以使用的是View的ContextSwitch http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch

    它可以让您创建不同的上下文,通常用于创建 csv/xml 文件。 假设你有一个名为 Index 的控制器和一个名为 FooAction() 的操作,我假设你已经有一个视图 scripts/index/foo.phtml

    您可以创建一个名为“mobile”的上下文,这将允许您为该上下文创建一个视图,例如 scripts/index/foo.mobile.phtml 。 这就像更改布局,但对于视图和以前的 wurfl 适配器,您可以更改布局并自动切换上下文。

    【讨论】:

    • 我已经接受了@ArtWorkAD 的回答,但您的回答也很有帮助 - 有 som rep :)
    猜你喜欢
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2012-03-29
    • 2021-01-27
    • 2017-11-21
    相关资源
    最近更新 更多