结构化“;嵌套的“;控制器


Structuring "nested" controllers

我希望以最好的方式构建我的应用程序。

我在我的应用程序中添加了一个"服务"部分。这将包括一个索引方法,以及应该通过/service/service1//service/service2/等到达的多个服务。

我正在考虑为每个服务提供一个ServiceController和一个方法。然后,每个服务都将有几个ajax方法,如/service/service1/getdata。但有了这个结构,getdata就不是它自己的方法,而是一个变量(我可以为service1函数服务,但这不是我想要的)。

我曾想过要有一个"服务"插件,但如果我只想在URL中添加/service/部分,那就觉得多余了。

还有路由,但我无法想出一个好的方法(例如路由/service/service1到/service1/)。这样,我还需要一个额外的控制器,它将具有/service/的索引方法。控制器文件夹中的所有服务都会很乱,所以如果可行的话,我最不想做的就是在文件名后面附加"service"。

我该如何构建这样的东西?

只需构建一个普通的"ServicesController"(注意复数)。

然后,如果你真的想要,你可以使用路由来实现"服务"的单一工作。

在您的控制器中,执行以下操作:

report() { ... }
api() { ... }
report_get_data() { ... }
api_whatever() { ... }

或者,如果功能应该相同,只有一个用于ajax,一个用于非,那么只需执行一个操作并检查请求是否为ajax:

if($this->request->is('ajax') { ...