我创建了自己的CakePHP 3组件。我使用$this->loadComponent()
将它包含在Controller中,并且工作正常;但是,我还需要将它包含在Cell中,该Cell没有loadComponent()
方法。
如何在单元格中包含组件?
答案 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);
}
}