Kohana儿童控制器与HMVC

时间:2011-12-23 18:03:28

标签: kohana php hmvc

我有一个主控制器,我想用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会自动创建它们。

1 个答案:

答案 0 :(得分:2)

你对控制器和HMVC的想法有一些错误。

这样做的最佳方法是使用面向对象的控制器。我的意思是“子控制器”需要扩展主控制器。

让主控制器扩展Controller_Template,子控制器扩展主控制器。

当您通过路线向子控制器发送请求时,您不仅可以访问父属性,而且您的请求将执行以下操作:

  1. 在主控制器的方法之前
  2. 在子控制器的方法之前。
  3. 子控制器的动作。
  4. 在子控制器的方法之后。
  5. 在父控制器的方法之后。
  6. 根据你提出的问题,你根本不需要HMVC。实际上,传递数据是一种非常糟糕的模式。请记住,当您通过HMVC执行内部请求时,这实际上是一个全新的请求。它将再次通过路线和此列表。您将无法访问所有以前的请求属性。

    另一个提示:不要将ORM功能放在主控制器中。请改用实际的ORM模型。