我正在使用 cakephp 3.1.7 并弄清楚如何调用视图单元格或从控制器检索单元格数据。我在 cakephp 文档的帮助下实现了基本单元格,也 http://josediazgonzalez.com/2014/03/20/view-cells/运行良好的文档。但是,当我尝试直接从控制器返回单元格时,出现以下错误。
错误:调用未定义的方法应用\控制器\产品控制器::d ecorate()
这是我所拥有的:
use CakeViewCell;
use CakeORMTableRegistry;
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 请求更新我的产品列表是否有效?我可以有选择地更新视图页面中呈现的特定单元格吗?有没有其他方法可以直接更新单元格。如果这是一个愚蠢的问题,请原谅我。
我正在使用 cakephp 3.1.7 并弄清楚如何调用视图单元格或从控制器检索单元格数据。
这在架构上是错误的。它们应该从视图级别使用。
如果要拥有模块化和抽象的控制器逻辑,请使用 CRUD 插件。或者干脆选择组件。组件是在控制器之间共享的逻辑包。
错误:调用未定义的方法 App\Controller\ProductsController::d ecorate()
在 Controller、CellTrait 和 View 类中都没有这样的方法。我不知道你从哪里得到那个代码,它也不在单元格的文档中。