我有一个主控制器,我想用HMVC从这个控制器调用子控制器。我设置了一个规则,将参数路由到一个特定的操作,该操作使用主控制器的"Request::factory"调用子控制器,但由于无限循环,它不起作用。有什么办法吗?
我必须使用HMVC,因为主控制器发送一些信息给子控制器,所以我需要一个控制层。
它将是CMS的crud应用程序的一种插件。
主控制器:http://pastebin.com/nt2fhMEy
子控制器示例:http://pastebin.com/WqaHZaxf
路由:http://pastebin.com/6JGFf2i2(我还没有配置action和cid)
额外注意:这将是我的CMS的一种crud模块。主控制器将加载主模板和一些配置。此外,主控制器包含一些ORM函数,子控制器必须能够使用parent::functionname。子控制器位于cruds/目录中,由cms自动创建。
你对控制器和HMVC的想法有一些错误。
最好的方法是使用面向对象的控制器。我的意思是"子控制器"需要扩展主控制器。让主控制器扩展Controller_Template,子控制器扩展主控制器
当你通过路由向子控制器发送请求时,你不仅可以访问父控制器的属性,而且你的请求将执行以下操作:
- 主控制器前置方法
- 子控制器的Before方法。
- 子控制器的动作。
- 子控制器的After方法。
- 父控制器的After方法。
从我从你的问题中得到的,你根本不需要HMVC。实际上这是一个非常糟糕的传递数据的模式。请记住,当您通过HMVC执行内部请求时,这实际上是一个全新的请求。它将再次遍历这些路线和这个列表。您将无法访问以前的所有请求属性。
另一个提示:不要将ORM函数放在主控制器中。请使用实际的ORM模型。