2017-03-28 2 views
0

私のアプリの他のすべてのコントローラがマスター(MY_Controller)を拡張するように、私はマスターコントローラを作成しています。 私の問題は、モデルの読み込みをより抽象的にする方法です。より説明しやすいコードを表示させてください。問題はMY_ControllerでiはモデルCodeigniterフレームワーク上のマスタコントローラにモデルをロードする方法は?

をロード傾けることである

class Home extends MY_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->model = "home_model"; 
    } 

    public function index() 
    { 
     $test = $this->get('id'); 
    } 
} 

:延びるコントローラ上で、私はそれをasignでき値よう

class MY_Controller extends CI_Controller 
{ 

    protected $model; 

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

    function get($order_by) 
    { 
     $this->load->model($this->model); 
     $query = $this->$this->model->get($order_by); 
     return $query; 
    } 
} 

Iは、マスタコントローラに$model保護変数を宣言します

$ this-> $ this-> model-> get();

私は次のエラーを取得する:Message: Object of class Home could not be converted to string

任意のヘルプは理解されるであろう、ありがとうございました!

+0

コントローラは素晴らしいが、あなたに感謝作品 –

答えて

0

なぜなどあなたが関数内の変数に保護されたグローバル$model変数に割り当てる値を保存しない:

class MY_Controller extends CI_Controller{ 

    protected $model; 

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

    function get($order_by){ 
    $_model = $this->model // I added this line. 
    $this->load->model($_model); // I modified this line. 
    $query = $this->$_model->get($order_by); // I modified this line. 
    return $query; 
    } 
} 
+0

モデルとして使用することはできません! –

0

$this->$this->model->get()は問題です。このようにチェーン内にオブジェクトプロパティ($this->model)を使用する場合は、中かっこで囲む必要があります($this->{$this->model}->get())。

関連する問題