2016-09-23 74 views
1

我试图组织我的控制器&模型,并将通用代码移动到父类。我设法组织了我的模型,但现在我坚持组织控制器。如何在Child控制器类中加载模型并在父类中使用?

我父控制器是:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class MY_Controller extends CI_Controller { 
    protected $model; 

    public function __construct(){ 
     parent::__construct(); 

    } 

public function getDataByCity(){ 
    echo(json_encode($this->model->getDataByCity())); 
} 

}?> 

我的孩子控制器是这样的:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class Hospital extends MY_Controller { 

public function __construct(){ 
     parent::__construct(); 
     $this->load->model('hospital_model'); 
     //how do I load this into the Parent's $model variable? 
    } 
} 
}?> 

在我的孩子控制器类,我怎么特定模型加载到父的$模型变量?

+0

试试这个:http://stackoverflow.com/questions/12040864/modify-parent-classs-variable-in-extended-class :) –

+0

我不认为这解决了我的问题,因为模型加载Codeignitor以及用该名称创建的变量。 –

+0

尝试指定第二个参数以将模型分配给不同的对象名称$ this-> load-> model('hospital_model','model'); ' –

回答

1

在MY_Controller:

... 
public function set_model($object) 
{ 
    $this->model = $object; 
} 
... 

医院:

... 
public function __construct(){ 
    parent::__construct(); 
    $this->load->model('hospital_model'); 
    parent::set_model($this->hospital_model); 
} 

...

+0

我得到这个错误: 消息:未定义的财产:医院:: $ hospital_model –

0

可以使用第二个参数模型分配给不同的对象名称。但是,$model财产应该是public

父控制器:

class MY_Controller extends CI_Controller { 
    public $model; 

    public function __construct(){ 
     parent::__construct(); 

    } 

public function getDataByCity(){ 
    echo(json_encode($this->model->getDataByCity())); 
} 

} 

儿童控制器:

class Hospital extends MY_Controller { 

public function __construct(){ 
     parent::__construct(); 
     $this->load->model('hospital_model', 'model'); 
    } 
} 
+0

我得到两个错误: 使用未定义的常数模型 - 假设'模型'& 您正在加载的模型名称是正在使用的资源:model –

+0

确保'$ model'属性为'null'。 –

0
在MY_Controller

class MY_Controller extends CI_Controller { 
    protected $model; 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function set_model($object) 
    { 
     $this->model = $object; 
     $this->load->model($this->model); 
    } 

    public function getDataByCity(){ 
     echo(json_encode($this->model->getDataByCity())); 
    } 

} 
医院

class Hospital extends MY_Controller { 

    public function __construct(){ 
     parent::__construct(); 
     parent::set_model('hospital_model'); 
    } 
} 
相关问题