我的CI控制器如下所示:
// Controller.
class Hello extends CI_Controller
{
public function one($name)
{
$this->load->model("hello_model");
$profile = $this->hello_model->getProfile("Me");
//$profile2 = $this->hello_model->otherAction();
$this->load->view('header');
$data = array("name" => $name);
$data['profile'] = $profile;
$this->load->view('one.html', $data);
}
}
这里是/是模型
class Hello_model extends CI_Model
{
public function getProfile($name)
{
return array("fullName" => "Martin", "Age" => 28);
}
}
class Hello_model_2 extends CI_Model
{
public function otherAction()
{
echo "Data";
}
}
当我启用$profile2
语句并在浏览器中访问控制器时,我在Apache错误日志中找到此错误消息:
[Mon Apr 01 ...] [error] [client 127.0.0.1]
PHP Fatal error:
Call to undefined method Hello_model::otherAction() in
/.../CodeIgniter_2.1.3/application/controllers/Hello.php on line x
其中x
是profile2
语句的行。
我可以在“model
”文件中没有两个课程吗?
顺便问一下,在CI中调用的.php
文件是什么?模块?
答案 0 :(得分:1)
每个文件只能有一个型号。
http://ellislab.com/codeigniter/user-guide/general/models.html
而是在同一个类中创建另一个方法,如 -
class Hello_model extends CI_Model
{
public function getProfile($name)
{
return array("fullName" => "Martin", "Age" => 28);
}
public function otherAction()
{
echo "Data";
}
}
答案 1 :(得分:1)
你必须创建两个seprate类文件
hello_model.php
class Hello_model extends CI_Model
{
public function getProfile($name)
{
return array("fullName" => "Martin", "Age" => 28);
}
}
hello_model_2.php
class Hello_model_2 extends CI_Model
{
public function otherAction()
{
echo "Data";
}
}
并在控制器中调用
$this->load->model("hello_model");
$this->load->model("Hello_model_2");
$profile = $this->hello_model->getProfile("Me");
$profile2 = $this->hello_model_2->otherAction();
或
您可以在模型中使用多种方法
答案 2 :(得分:0)
您可以尝试使用其他模型的“EXTENDS”,例如
class Hello_model extends CI_Model
{
public function getProfile($name)
{
return array("fullName" => "Martin", "Age" => 28);
}
public function otherAction()
{
echo "Data";
}
}
然后创建第二个模型,如Hello_model_2.php
class Hello_model_2 extends Hello_model
{
//Here access those from Hello_model
}
答案 3 :(得分:0)
如果您要创建2个模型文件Hello_model
和Hello_model_2
,那么还要像这样加载Hello_model_2
class Hello extends CI_Controller
{
public function one($name)
{
$this->load->model("hello_model");
$this->load->model("hello_model_2");
$profile = $this->hello_model->getProfile("Me");
$profile2 = $this->hello_model_2->otherAction();
$this->load->view('header');
$data = array("name" => $name);
$data['profile'] = $profile;
$this->load->view('one.html', $data);
}
}
如果您使用的是一个模型和两个函数,那么您应该将此代码用于模型
class Hello_model extends CI_Model
{
public function getProfile($name)
{
return array("fullName" => "Martin", "Age" => 28);
}
public function otherAction()
{
echo "Data";
}
}
希望你明白。