0

何らかの理由で、コントローラーからモデルの関数を呼び出そうとすると、エラーが返されます `

PHP Fatal error:  Call to undefined method Test_model::ajax() in /var/www/CodeIgniter/application/controllers/blog.php on line 19, referer: http://localhost/CodeIgniter/index.php/blog`

models フォルダーにある test_model.php という名前のモデルは次のとおりです。

<?php
class Test_model extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }

    function ajax(){
        echo 'ajax successful';
    }
}
?>

上記のモデルで ajax メソッドを使用しようとしているコントローラーは次のとおりです。

 <?php
    class Blog extends CI_Controller {

        public function index()
        {
            $data['title'] = "My Real Title";
            $data['heading'] = "My Real Heading";
            $this->load->view('blogview', $data);
        }

        public function comments()
        {
            echo 'Look at this!';
        }

        public function ajax()
        {
            $this->load->model("test_model");
            $this->test_model->ajax();
        }
    }
    ?>

では、なぜ undefined method エラーが発生するのでしょうか?

編集 提案により、コントローラーを次のように変更して、インデックスのアクションでモデルをロードするようにしました

<?php

    class Blog extends CI_Controller {

        public function index()
        {
            $data['title'] = "My Real Title";
            $data['heading'] = "My Real Heading";
            $this->load->model("test_model");
            $this->load->view('blogview', $data);
        }

        public function comments()
        {
            echo 'Look at this!';
        }

        public function ajax()
        {
            $this->test_model->ajax();
        }
    }
?>

これはエラーを返します

 PHP Fatal error:  Call to a member function ajax() on a non-object in /var/www/CodeIgniter/application/controllers/blog.php on line 19, referer: http://localhost/CodeIgniter/index.php/blog
4

2 に答える 2

1

ファイル名に注意してください:

正しい

model/test_model.php

正しくない

model/Test_model.php

クラスの名前が Test_model の場合、$this->load->model("Test_model"); を呼び出す必要があります。

このような:

public function ajax()
{
$this->load->model("Test_model");
$this->Test_model->ajax();
}

もちろん、メソッドを呼び出すには:

http://yoursite.localhost/index.php/blog/ajax
于 2013-07-24T18:55:46.243 に答える