2

CatsController親の関数を呼び出した

 parent:index();

この関数では、親コントローラー ( AnimalsController) は独自のモデルを使用しますAnimal

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

したがって、私が呼び出すとparent:index()、親のモデルの代わりに独自のモデルを使用するCatsControllerため、エラーが発生します。CatsControllerCatAnimal

Fatal error: Call to a member function find() on a non-object

を使用してモデルをロードするのではなく、::loadModel

Controller::loadModel('Article');

どうすればこの問題を解決できますか? 親のモデルを子に「バインド」する最良の方法は何ですか?

4

1 に答える 1

2

$uses

$uses配列Animalに入れます。

<?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 に答える