CodeIgniter Hello World MVC有两个型号

时间:2013-04-01 10:34:38

标签: php codeigniter

我的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

其中xprofile2语句的行。

我可以在“model”文件中没有两个课程吗? 顺便问一下,在CI中调用的.php文件是什么?模块?

4 个答案:

答案 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_modelHello_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";
   }
}

希望你明白。