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

到我的控制器中的索引功能它将起作用。

所以我猜模型和控制器之间的连接不起作用,但我不确定,也不知道如何解决这个问题。

请帮帮我。

谢谢

4

3 回答 3

7

CakePHP 使用控制器名称单数变体来匹配模型,类别的单数category 而不是categorie

于 2012-12-10T13:33:29.010 回答
3

正如@ndm 所说,您应该使用 CakePHP 约定。你的表应该被称为categories,那么你的模型应该是这样的:

class Category extends AppModel{

}

然后你可以将它包含在:

$this->loadModel('Category');

在 CategoriesController 上,您可以像这样使用它:

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 回答