CakePHP 3组件在一个单元格中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CakePHP 3组件在一个单元格中相关的知识,希望对你有一定的参考价值。
我创建了自己的Cakephp 3组件。我使用$this->loadComponent()
将它包含在一个控制器中,它工作正常;但是,我还需要将它包含在一个没有loadComponent()
方法的Cell中。
如何在单元格中包含组件?
答案
你不在那里使用组件。因为单元格是单元格而不是控制器。一个单元甚至不知道控制器,检查源。 http://api.cakephp.org/3.3/source-class-Cake.View.Cell.html
如果您需要/想要以任何方式使用单元格内的组件,我认为您的架构设计错误。由于您“忘记”共享代码,因此无法提供任何进一步的建议。无论您在那里尝试做什么,都要重构您的应用程序架构。
另一答案
不会说这是最佳做法,但如果您需要从单元格访问组件,这里是一个快速的解决方法。
在你的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);
}
}
以上是关于CakePHP 3组件在一个单元格中的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?