CakePHP 3组件在一个单元格中

时间:2016-10-07 08:47:30

标签: cakephp cakephp-3.0

我创建了自己的CakePHP 3组件。我使用$this->loadComponent()将它包含在Controller中,并且工作正常;但是,我还需要将它包含在Cell中,该Cell没有loadComponent()方法。

如何在单元格中包含组件?

2 个答案:

答案 0 :(得分:2)

您不在那里使用组件。因为单元格是单元格而不是控制器。一个单元甚至不知道控制器,检查源。 http://api.cakephp.org/3.3/source-class-Cake.View.Cell.html

如果您需要/想要以任何方式使用单元格内的组件,我认为您的架构设计错误。由于您“忘记”共享代码,因此无法提供任何进一步的建议。无论你想做什么,都要重构你的应用程序架构。

答案 1 :(得分:0)

不会说这是最佳做法,但是如果您需要从单元中访问组件,这是一种快速的解决方法。

在您的AppController中

use Cake\Core\Configure;

class PageController extends AppController
{
    public function initialize()
    {
        Configure::write('controller', $this);
    }
}

在您的单元格中

<?php
namespace App\View\Cell;

use Cake\Core\Configure;

class ExampleCell extends Cell
{
    public function getController(){
        return Configure::read('controller');
    }
    public function display()
    {
        $data = $this->getController()->ComponentName->method();
        $this->set('data', $data);
    }

}