我正在使用CakePHP 2.4.7
但是,现在我想为“产品”部分构建一个视图,它只显示一些'组件'和一些'套件< / EM>”。
我认为最好的方法是将两个Index()函数从KitsController和ComponentsController导入ProductsController中的Index()函数,该函数允许我的Products视图访问包含所需数据的两个数组。
套件和组件控制器中的Index()函数只有:
public function index() {
$this->set('kits', $this->Kit->find('all'));
}
我尝试了这个和类似的代码,但它不起作用。我最终得到一个SQL错误,或者找不到Kit,Class或Model错误:
<?php
//Import controller
App::import('Controller', 'Kits');
App::import('Controller', 'Components');
class ProductsController extends AppController {
//Instantiation
$Kits = new KitsController;
$Comps = new ComponentsController;
//Load model, components...
$Kits -> constructClasses();
$Comps -> constructClasses();
function index() {
$Kits->index();
$Comps->index();
}
}
?>
答案 0 :(得分:3)
在Controller类中实例化其他Controller类是一个坏习惯。
如果我理解您的意图,您希望在ProductsController中同时提供套件数据和组件数据。为此,您必须以某种方式链接基础模型(statically或on the fly)。
执行此操作后,ProductModel与其他模型链接,以便您可以通过以下方式获取数据:
function index() {
$kits = $this->Product->Kit->find('all');
$comps = $this->Product->Component->find('all');
$this->set(compact('kits', 'comps'));
}
我希望这有帮助!