处理站点的子部分 - Codeigniter

时间:2012-10-24 20:21:21

标签: php codeigniter codeigniter-routing

我对Codeigniter和MVC都很陌生,我在找出实现这一目标的最佳方法时遇到了一些麻烦。

我需要构建一个应用程序,允许用户申请一些机构提供的各种程序。但是,这些机构必须在应用程序中都有一个位置,但他们希望彼此独立 - 不要为所有程序共享一个应用程序页面。例如,机构1希望站点的一部分仅查看并应用于他们的程序,而机构2希望站点的一部分仅适用于他们的程序。

实现这一目标的最佳方法是什么?我应该为每个机构创建一个单独的控制器吗?

E.g。 sitename.com/inst1/apply, sitename.com/inst2/apply

这些控制器中的每一个基本上都与相同的创建/读取/更新/等功能相同。在这种情况下,最佳做法是什么?谢谢!

4 个答案:

答案 0 :(得分:1)

您可以创建文件夹以正确提供您的功能。这被广泛用于API。

例如。你可以拥有这样的文件夹结构。

- application/
    - controllers/
        - inst1/
            apply.php
        - inst2/
            apply.php

有了这个,你就会拥有像。

这样的URL端点
index.php/inst1/apply
index.php/inst2/apply

答案 1 :(得分:0)

我认为你做得对,你为每个机构创建了控制器,允许你改变每个机构的数据。视图可以共享,因为所有功能都在控制器/模型中,这是MVC最重要的一个方面,即能够分离这些层并在需要的地方重用所需的内容而无需重复。如果您将页面设置为模板,您甚至可以提取不同的模板以将视图提供给特定于机构的视图。

答案 2 :(得分:0)

为此您可能想要使用相同的控制器,而是通过将您的函数传递给另一个uri段来处理变体,您可以阅读here 。在我的codeigniter应用程序中,我喜欢在每个控制器或模型中保留特定功能。所以它可能看起来像:

sitename.com/my_controller/my_function/my_argument

控制器中的功能如下所示:

public function my_function($argument){
//stuff goes here
}

您当然可以使用routes file来制作您想要的网址。

答案 3 :(得分:0)

只需构建一个控制器,然后设置一个标志来区分它们。在视图文件中,您可以检查此标志以确定显示程序的天气并应用与否。

您的网址就是这样:

sitename.com/inst/1/apply, sitename.com/inst/2/apply

注意:您也可以用文字更改网址中的数字;更好地 seo