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