出于某种原因,每当我尝试从控制器调用模型中的函数时,它都会返回错误“
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
答案 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