在CodeIgniter中为我的Web应用程序创建移动版本

时间:2010-05-27 12:22:55

标签: php codeigniter mobile-website

我正在使用CodeIgniter开发一个新的网络应用程序,我想创建一个移动版本,当用户通过手机访问时,用户可以重定向到该移动版本。

应用程序的移动版本应该有不同的流程,因此在代码中交换CSS / HTML文件对我来说不是一个选项,因为移动版本和Web版本将在控制器和视图中处理不同的东西,同时共享相同的模型。

无论如何我能如何有效地做到这一点?

非常感谢您的帮助。 :)

2 个答案:

答案 0 :(得分:4)

如果你真的需要2个独立的应用程序,你可以使用juste一个或两个codeigniter核心修改来设置它,具体取决于你是使用PHP4还是5。

我们已经按照CI's wiki page完成了它,并且效果很好,我们共享模型,库,配置。 基本上你有一个像这样的项目组织:

/application/
   /common/<similar to application directory, but used for shared libs/helper/models/configs files>
   /frontend/<similar to application directory>
   /backend/<similar to application directory>
/system/

通过覆盖加载器,如果对于公共类或特定于应用程序存在相同的lib / config,则可以实现加载优先级。此外,您可以移动所有常用代码(控制器,特定路由类等),并仅在应用程序中保留特定于应用程序的过载。

最后,您有两个前端控制器(大多数与index.php文件相同),每个应用程序一个,您可以使用URL重写,特定子域等过滤访问者。

如果你的目标是运行PHP4的服务器,我在codeigniter论坛上打开了this thread,看看核心类要改变什么才能使它工作(没有修改就会出现加载问题)

另一种可行的替代方案,但我尚未使用它,正在使用HMVC organisation

答案 1 :(得分:1)

解决方案(a):

  • 如果用户使用移动或桌面客户端,则签入全局控制器
  • 根据客户端版本加载控制器(controller_default.php / controller_mobile.php)
  • 两次完成所有客户特定的内容
  • 视图可以存储在不同的文件夹中

注意:如果您的应用程序在一段时间内不断增长,(a)会变得混乱。

解决方案(b):

  • 修改index.php以根据使用的客户端加载不同的应用程序文件夹
  • 将模型/配置/库存储在共享文件夹中

CI框架的上述任何(广泛?)修改。尽量通过覆盖现有的类(MY_Controller等)来尽可能地做,以便以后能够更新。