直接从控制器

时间:2016-01-15 02:44:11

标签: cakephp cakephp-3.0

我正在使用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请求?我可以有选择地更新在视图页面中呈现的特定单元格吗?有没有其他方法可以直接更新单元格。如果这是一个愚蠢的问题,请原谅我。

1 个答案:

答案 0 :(得分:1)

  

我正在使用cakephp 3.1.7并弄清楚如何调用视图单元格或从控制器中检索单元格数据。

这在架构上是错误的。它们应该从视图级别使用。

如果您想要模块化和抽象化的控制器逻辑,请使用CRUD plugin。或者只是去寻找组件。组件是控制器之间共享的逻辑包。

  

错误:调用未定义的方法App \ Controller \ ProductsController :: decorate()

Controller,CellTrait和View类中没有这样的方法。我不知道你从哪里得到这些代码,它也不在单元格的文档中。