CakePHP:在调用parent :: function()时使用父模型?

时间:2013-08-01 20:16:17

标签: php cakephp

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

我该如何解决这个问题?将父母的模型“绑定”给孩子的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

$用途

Animal放入$uses数组:

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

CatsController extends AnimalController {

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

}

loadModel

或者将代码修改为load the model before using it

public function index() {
    $this->loadModel('Animal');
    $this->set('articles', $this->Animal->find('all'));
}

ClassRegistry

或者使用类注册表:

public function index() {
    $Animal = ClassRegistry::init('Animal');
    $this->set('articles', $Animal->find('all'));
}