带有HMVC的Kohana子控制器


Kohana children controllers with HMVC

我有一个主控制器,我想用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,子控制器扩展主控制器

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

  1. 主控制器前置方法
  2. 子控制器的Before方法。
  3. 子控制器的动作。
  4. 子控制器的After方法。
  5. 父控制器的After方法。

从我从你的问题中得到的,你根本不需要HMVC。实际上这是一个非常糟糕的传递数据的模式。请记住,当您通过HMVC执行内部请求时,这实际上是一个全新的请求。它将再次遍历这些路线和这个列表。您将无法访问以前的所有请求属性。

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