Plugins cakephp 3共享组件和控制器属性(插件)

Plugins cakephp 3共享组件和控制器属性(插件),plugins,cakephp-3.0,Plugins,Cakephp 3.0,我试图理解,当控制器是同一个插件的一部分时,如何在组件中使用它们。我不太确定这样做是否是一种好的做法 要注册从中调用组件的任何控制器,请使用: public function setController($controller) { $this->Controller = $controller; } public function initialize(array $config) { parent::initialize($config); $this->C

我试图理解,当控制器是同一个插件的一部分时,如何在组件中使用它们。我不太确定这样做是否是一种好的做法

要注册从中调用组件的任何控制器,请使用:

  public function setController($controller)
{
    $this->Controller = $controller;
}

public function initialize(array $config)
{
  parent::initialize($config);
  $this->Controller = $this->_registry->getController();
}

但当我想使用属于插件包的控制器时,正确的方法是什么

我不明白实际的问题,一个组件总是接收它所连接的控制器的实例,所以如果它是一个属于插件的控制器,那么你会得到该插件控制器的实例吗?另外,除了组件所连接的控制器之外,为什么还需要设置其他任何控制器?我正在尝试按照烹饪手册中的教程进行操作。创建ContactsController时会出现一段。问题是我看不到如何通过组件实例$this->ContactManager->Contact->function调用这个控制器?在组件中,我使用setController。除了组件当前连接的控制器之外,您不需要调用其他控制器,同时使用多个控制器违反了MVC原则,需要这样做表明应用程序设计不好。再说一次,我不明白你为什么要这么做,为了从任何人那里得到一个有用的答案,如果你能拿出一个真实的例子可能会更好;我知道如何通过在组件中初始化$this->controller来利用控制器中的组件。但我唯一真正不明白的是,除了plugin/routes.php中的引用之外,如何使用作为插件一部分的控制器。你能举例说明如何使用ContactsController及其组件吗对不起,我还是不明白你的问题。我不知道你到底在做什么,为什么要这么做,这是插件控制器独有的问题。再一次,请给出一个真实世界的例子,代码显示了您到底想在哪里调用什么,以及为什么要调用。