我对Codeigniter和MVC都很陌生,我在找出实现这一目标的最佳方法时遇到了一些麻烦。
我需要构建一个应用程序,允许用户申请一些机构提供的各种程序。但是,这些机构必须在应用程序中都有一个位置,但他们希望彼此独立 - 不要为所有程序共享一个应用程序页面。例如,机构1希望站点的一部分仅查看并应用于他们的程序,而机构2希望站点的一部分仅适用于他们的程序。
实现这一目标的最佳方法是什么?我应该为每个机构创建一个单独的控制器吗?
E.g。 sitename.com/inst1/apply, sitename.com/inst2/apply
这些控制器中的每一个基本上都与相同的创建/读取/更新/等功能相同。在这种情况下,最佳做法是什么?谢谢!
答案 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 。