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

次のようにインデックスを試すことができます。

class TasksController extends AppController{


    public function index(){

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

Error: Call to a member function find() on a non-object が発生した場合は、次のように設定できます。

$this->loadModel('Task');
于 2014-09-30T02:33:27.630 に答える
0

$uses特定のコントローラーのプロパティが設定されていない場合、CakePHP は対応するモデルの自動インスタンス化を行い$usesます。AppControllernullarray()

したがって、セットを空にするか、単に で値を上書きするかどうかを確認して$usesください。AppControllerTasksControllerpublic $uses = array('Task');

于 2013-10-02T09:49:02.200 に答える