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