在CatsController
中我调用了父母的函数
parent:index();
在此函数中,父控制器(AnimalsController
)使用自己的模型Animal
:
public function index() {
$this->set('articles', $this->Animal->find('all'));
}
因此,当我在parent:index()
中调用CatsController
时,我会收到错误,因为CatsController
将使用自己的模型Cat
而不是父模型Animal
:
Fatal error: Call to a member function find() on a non-object
而不是使用::loadModel
Controller::loadModel('Article');
我该如何解决这个问题?将父母的模型“绑定”给孩子的最佳方法是什么?
答案 0 :(得分:2)
将Animal
放入$uses数组:
<?php
App::uses('AnimalController', 'Controller');
CatsController extends AnimalController {
$uses = array(
'Cat',
'Animal'
);
}
或者将代码修改为load the model before using it:
public function index() {
$this->loadModel('Animal');
$this->set('articles', $this->Animal->find('all'));
}
或者使用类注册表:
public function index() {
$Animal = ClassRegistry::init('Animal');
$this->set('articles', $Animal->find('all'));
}