为什么会出现此错误?
Fatal Error
Error: Call to a member function find() on a non-object
File: /home/mycake/public_html/app/Controller/TasksController.php
Line: 7
我认为这与使用 CAKE 2.0 有关,但我认为我的控制器中的代码可能是 CAKE 1.3?我已经做了一些研究,但我不知道如何将代码更改为 CAKE 2.0。谁能帮忙?
这是任务控制器.php页面
<?php
class TasksController extends AppController {
public $name = 'tasks';
public function index() {
//THIS IS THE LINE 7
$tasks = $this->Task->find('all');
$this->set('tasks', $tasks);
}
}
如果您需要更多信息,请询问,因为我不确定如何使其更相关以获得答案:)
如果你的控制器被调用TasksController
那么它将尝试自动实例化Task
模型。您无需手动指定它。CakePHP 抛出错误的原因是因为你已经复数化了名称(模型是单数的,所以Task
不是Tasks
),并且也是驼峰大小写的,这意味着它们以大写字母开头(Task
不是task
)。
如果未设置特定控制器的属性$uses
,CakePHP 会自动实例化相应的模型,因此这意味着您可能会意外地将AppController
的属性$uses
设置为 null
或 array()
。
因此,请检查您是否将AppController
中的$uses
设置为空,或者干脆在TasksController
中,用 public $uses = array('Task');
覆盖该值。
您可以像这样尝试索引:
class TasksController extends AppController{
public function index(){
$this->set('tasks', $this->Task->find('all'));
}
如果你在非对象上收到错误:调用成员函数find(),你可以输入:
$this->loadModel('Task');