Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “结构化”;嵌套的;控制器_Php_Cakephp_Cakephp Routing - Fatal编程技术网

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

Php “结构化”;嵌套的;控制器,php,cakephp,cakephp-routing,Php,Cakephp,Cakephp Routing,我希望以最好的方式构建我的应用程序 我正在将“服务”部分添加到我的应用程序中。这将包括一个索引方法,以及多个应该通过/service/service1/或/service/service2/等方式访问的服务 我正在考虑为每个服务提供一个ServiceController和一个方法。然后,每个服务将有两个ajax方法,如/service/service1/getdata。但是使用这种结构,getdata将不是它自己的方法,而是一个变量(我可以为service1函数提供服务,但这不是我想要的) 我曾

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

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

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

我曾考虑过使用一个“服务”插件,但如果我只想在URL中添加
/Service/
部分,那就觉得多余了

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

如何构造这样的东西?

只需构建一个普通的“ServicesController”(注意复数形式)

然后,如果你真的愿意,你可以用它来做“服务”工作

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

report() { ... }
api() { ... }
report_get_data() { ... }
api_whatever() { ... }
或者,如果功能应该相同,一个用于ajax,一个用于non,那么只需执行一个操作并检查请求是否为ajax:

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

你真的把每件事都称为“服务1”、“服务2”等等吗?如果你给我们提供真实姓名和一些上下文,我们可能会更好地提供帮助。不,这些只是例子。例如,它们是“报告”或“api”,并且除了“服务”之外,实际上不共享任何内容“类别。我已经协调过了。我不喜欢的是,属于一个服务的方法并不是集中在一个逻辑位置。但也许这是你得到的最好的?我们在谈论多少行动?您的每次服务将超过10次还是20次?如果没有,那就好了。可以随意按类型重新组织,但是——我很难想象会有这么多。如果你要有一吨,那么你可能应该考虑把这些东西放在不同的控制器中。按“report”、“report_data”、“api”、“api_data”等类型将它们按顺序排列……甚至可以使用注释来清楚地标记一个从何处开始,另一个从何处开始……etcI猜测每个服务大约5-10个,我将只提供一些服务。所以这并不是说太多,我只是在寻找好的方法来组织事情。