2

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');

我怎么解决这个问题?将父母的模型“绑定”到孩子的最佳方式是什么?

4

1 回答 1

2

$用途

要么放入Animal$ uses数组:

<?php
App::uses('AnimalController', 'Controller');

CatsController extends AnimalController {

    $uses = array(
        'Cat',
        'Animal'
    );

}

加载模型

或者在使用之前修改代码以加载模型:

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'));
}
于 2013-08-01T22:38:45.663 回答