如何在CI中的两个应用程序之间共享控制器和模型?

时间:2012-06-26 18:41:15

标签: php codeigniter codeigniter-2 codeigniter-url

我正在使用CodeIgniter 2.1.1并使用两个环境构建网站 - 生产和测试。基本上,在开始时,两个环境都具有相同的程序逻辑。但现在有几个修改。

我们的想法是共享生产环境和测试环境的控制器和模型,但对这两种环境有不同的看法。

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

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

2 个答案:

答案 0 :(得分:1)

不要重定向。是否包含该文件。

假设你有这个文件结构:

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

在两个环境中创建具有完全相同名称的文件。我们的例子中我们会说controller.php。在生产环境中,进行编码。在您的测试环境中,请包含此行,并且只包含以下行:

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

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

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

答案 1 :(得分:0)

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

要回答您的问题,您可以通过设置符号链接在两个不同的应用之间共享模型和控制器。我已经在linux中完成了它,但在Windows中它应该是相同的。所以,假设您希望实际文件位于测试应用程序中。将所有php文件放在测试应用程序的控制器和模型目录中。而不是在生产应用程序中创建控制器和模型目录,只需创建符号链接到测试应用程序的相应目录。