zhitianjiao 发表于 2010-11-25 01:43:06

请教:2个控制器之间继承后,如何在父控制器调用模型?

本帖最后由 zhitianjiao 于 2010-11-25 02:24 编辑

大家好!


为了oop重用的需要,我在app/libraries/ 下建立一个父类文件 test.php ,然后让app/controllers/ 目录下的控制器继承这个父类。

其中,方法say() 被子类中访问没有任何问题;
但是, play() 方法会去调用模型,调用模型action_model时会提示错误说“找不到对象”,请问有什么办法解决这个问题?


test.php
class Test extends Controller{

      public funtion Test(){
          parent::Controller();   
          //在构造函数中载入动作模型
          $this->load->model('Action_model');         
      }
      
       //测试 说话
       public funtion say(){
          //不调用任何模型
          echo 'im test';            
      }

       //测试执行一个动作
       public funtion play(){
          //调用模型,出现问题的代码
          $this->Action_model->play();   

          //同理,以下代码也无法执行
          $this->load->database();
          $query = $this->db->query('SELECT name, title, email FROM my_table');

      }

}

错误提示:
Fatal error: Call to a member function play() on a non-object


这个错误是由于无法正确加载模型造成的,我试过直接在里面调用数据库类也出错。
大家都知道在 app/controllers/ 下的控制器 通过 $this->load->model('model_name');   是能够直接访问模型的。





`

zhitianjiao 发表于 2010-11-25 02:29:09

本帖最后由 zhitianjiao 于 2010-11-25 02:33 编辑

占楼,希望有人回答。

require BASEPATH.'app/models/action_model.php';
之类的方法肯定是不行的,因为该model还会调用数据库操作对象。

`

visvoy 发表于 2010-11-25 08:39:10

看代码没错,估计是控制器子类的构造函数没用parent::Test()

Hex 发表于 2010-11-25 12:32:34

建议楼主使用 MY_Controller,具体请参考手册。
页: [1]
查看完整版本: 请教:2个控制器之间继承后,如何在父控制器调用模型?