我正在使用cakephp 3.1.7并弄清楚如何调用视图单元格或从控制器中检索单元格数据。我在cakephp docs以及http://josediazgonzalez.com/2014/03/20/view-cells/文档的帮助下实现了基本单元格。但是,当我尝试直接从控制器返回单元格时,我收到以下错误。
错误:调用未定义的方法App \ Controller \ ProductsController :: decorate()
这就是我所拥有的:
use Cake\View\Cell;
use Cake\ORM\TableRegistry;
class ProductupdateCell extends Cell
{
public function display($options = []){
if (!empty($options['displaylist'])) {
$this->set('productlist', $options['displaylist']);
return $this;
}else{
$category = $this->request->query['category'];
$this->loadModel('Products');
$query = $this->Products-> find()
-> where(['Products.category' => $category])
-> hydrate(false);
$productlist = $query->toArray();
$this->set('productlist',$productlist);
return $this;
}
}
}
在我的控制器中,
<?php
class ProductsController extends Controller
{
use CellTrait;
public function view($id)
{
$products = $this->Products->findById($id);
$this->set('displaylist', $this->decorate('ProductupdateCell', $products));
}
}
请纠正我出错的地方。使用此更新我的产品列表是否有效根据用户输入ajax请求?我可以有选择地更新在视图页面中呈现的特定单元格吗?有没有其他方法可以直接更新单元格。如果这是一个愚蠢的问题,请原谅我。
答案 0 :(得分:1)
我正在使用cakephp 3.1.7并弄清楚如何调用视图单元格或从控制器中检索单元格数据。
这在架构上是错误的。它们应该从视图级别使用。
如果您想要模块化和抽象化的控制器逻辑,请使用CRUD plugin。或者只是去寻找组件。组件是控制器之间共享的逻辑包。
错误:调用未定义的方法App \ Controller \ ProductsController :: decorate()
Controller,CellTrait和View类中没有这样的方法。我不知道你从哪里得到这些代码,它也不在单元格的文档中。