无法在codeigniter中加载模型

时间:2013-07-24 18:41:56

标签: codeigniter model

出于某种原因,每当我尝试从控制器调用模型中的函数时,它都会返回错误“

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`

这是模型文件夹

中名为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();
        }
    }
    ?>

那么为什么我得到未定义的方法错误?

修改 通过sugesstion我将我的控制器更改为以下内容,以包括在索引到

的操作中加载模型
<?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

2 个答案:

答案 0 :(得分:1)

你必须在你的行动中index以正确的方式对模型进行调整 型号名称区分大小写 试着改变这个:

$this->load->model("test_model");

将其放入行动index

$this->load->model("Test_model");

必须为大写

<强>更新
在控制器内部更改动作ajax

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

答案 1 :(得分:1)

注意文件名:

正确

model/test_model.php

不正确的

model/Test_model.php

如果班级名称为Test_model,则必须调用$ this-&gt; load-&gt; model(“Test_model”);

像这样:

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

当然,要调用方法:

http://yoursite.localhost/index.php/blog/ajax