1

最新のCakePHPアプリケーションで問題が発生しました。

カテゴリのモデルとコントローラーを作成しました。

モデル:Categorie.php

class Categorie extends AppModel{
    public $name = 'Categorie';
}

コントローラー:CategoriesController.php

class CategoriesController extends AppController {
    public function index(){
        $this->set('list', $this->Categorie->find('all'));
    }
}

しかし、このページにアクセスすると、次のエラーが発生します。

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

追加すると

$this->loadModel('Categorie');

私のコントローラーのインデックス機能にそれは動作します。

そのため、モデルとコントローラー間の接続が機能していないと思いますが、よくわかりません。これを修正する方法もわかりません。

私を助けてください。

thnx

4

3 に答える 3

7

CakePHP は、モデルのマッチングにコントローラー名の単数形を使用します。カテゴリの単数形は、categorieではなく、categoryです。

于 2012-12-10T13:33:29.010 に答える
3

@ndmが言ったように、CakePHPの規則を使用する必要があります。テーブルの名前を指定するとcategories、モデルは次のようになります。

class Category extends AppModel{

}

そして、それを含めることができます:

$this->loadModel('Category');

CategoryControllerでは、次のように使用できます。

class CategoriesController extends AppController {
    public function index(){
        $this->set('list', $this->Category->find('all'));
    }
}

それ以外の方法でテーブルに名前を付けたい場合は$useTable、コントローラーの変数を使用して、モデルが機能するテーブルの名前を指定できます。

于 2012-12-10T13:52:51.843 に答える
2

コントローラの$usesプロパティを利用することもできます:

public $uses = array('Categorie');
于 2012-12-10T15:13:58.393 に答える