0

为什么我会收到此错误?

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。任何人都可以帮忙吗?

这是 TasksController.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);
    }
}

如果您需要更多信息,请询问,因为我不确定如何使它更相关以获得答案:)

4

3 回答 3

1

如果您的控制器被调用TasksController,那么它将尝试Task自动实例化模型。您无需手动指定它。CakePHP 抛出错误的原因是因为您已经将名称复数(模型是单数,所以Tasknot Tasks)并且也是驼峰式,这意味着它们以大写字母 ( Tasknot task) 开头。

于 2013-10-02T10:01:46.930 回答
0

如果未设置特定控制器的属性,CakePHP 会自动实例化相应的模型$uses,因此这意味着您可能会不小心将$uses您的属性设置AppControllernullarray()

因此,请检查$uses您的AppControllerset 是否为空,或者只是在您的 中TasksController,用 覆盖该值public $uses = array('Task');

于 2013-10-02T09:49:02.200 回答
0

您可以尝试这样的索引:

class TasksController extends AppController{


    public function index(){

        $this->set('tasks', $this->Task->find('all'));
    }

如果您收到错误:调用非对象上的成员函数 find(),您可以输入:

$this->loadModel('Task');
于 2014-09-30T02:33:27.630 回答