【问题标题】:How to share controller and model between two applications in CI?如何在 CI 中的两个应用程序之间共享控制器和模型?
【发布时间】:2012-06-26 18:41:15
【问题描述】:

我正在使用 CodeIgniter 2.1.1 并使用两种环境(生产环境和测试环境)构建网站。本质上,一开始,两种环境都具有相同的程序逻辑。但现在有几处需要修改。

这个想法是共享生产环境和测试环境的控制器和模型,但对两个环境有不同的视图。

我已经设置了 WAMP,在 WWW 目录中有两个单独的文件夹:一个用于测试,另一个用于生产。每个文件夹下都有控制器、模型、视图等。 CI 被适当地指向并设置了基本 URL。

我的问题是,当我在网络浏览器中键入 URL 以调用测试环境的控制器时,它应该重定向并调用生产环境的控制器。这可能吗?

【问题讨论】:

  • 我正在删除mvc 标签。它与作为模式的 MVC 无关,仅与 CodeIgniter 特定的东西有关。也就是说,你的描述有点令人困惑。通常,测试、登台、开发和生产环境是相同代码库在不同位置(如:不同服务器或子域)的独立部署。可能有不同的配置。它不是同一代码库中代码的复制粘贴部分。你到底想做什么?

标签: php codeigniter codeigniter-2 codeigniter-url


【解决方案1】:

不要让它重定向。让它包含该文件。

假设你有这个文件结构:

www-root
 |-production
 |   |-application
 |   |   |-controllers
 |   |   |-etc.
 |   |-etc.
 |
 |-test
 |   |-application
 |   |   |-controllers
 |   |   |-etc.
 |   |-etc.
 |

在两个环境中创建具有完全相同名称的文件。对于我们的示例,我们会说controller.php。在生产环境中,进行编码。在您的测试环境中,仅包含此行:

<?php include '../../../production/application/controllers/controller.php';

这应该将文件从您的生产环境拉到您的测试环境中。只要确保您是否对任何链接进行硬编码以使它们相对而不是绝对。这样,当它被拉入您的测试环境时,它将引用您的测试资产,而不是您的生产资产。

这是未经测试的,因为我现在无法访问我的 CI 安装。让我知道结果如何。

【讨论】:

    【解决方案2】:

    我建议您最终设置某种类型的版本控制,例如 Git。您可以在测试时编辑环境并将更改推送到生产环境。

    要回答您的问题,您可以通过设置符号链接在两个不同的应用程序之间共享模型和控制器。我在linux中做过,但在windows中应该是一样的。因此,假设您希望实际文件位于测试应用程序中。将所有 php 文件放在测试应用的控制器和模型目录中。无需在生产应用程序中创建控制器和模型目录,只需创建指向测试应用程序各自目录的符号链接即可。

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2010-11-24
      • 2017-11-28
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多