2016-09-23 61 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'); 
    } 
} 
相關問題