2012-03-13 9 views
0

インデックスファイルでは、私は_autoloadを持っていて、libsをロードしてからurlを爆発させて、必要なcontollerとモデルがあればそれを取得します。ビューでは、私は(モデル__constructを見ることができる)ので、モデルがロードされているが、私は$this->model->test();を使用しようとする場合、私は非オブジェクトにメンバ関数のテスト()へモデル内でメソッドを実行する方法| MVC

コールを取得

http://site.com/について

$this->request = about; 
$controller = new $this->request; 
$controller->loadModel($this->request); 

Everething作業OK

* ここ

class Conroller { 

    function __construct() { 
     // echo 'Main controller<br />'; 
     $this->view = new View(); 
    } 

    public function loadModel($name) { 
     $path = 'models/'.$name.'_model.php'; 
     if (file_exists($path)) { 
      require 'models/'.$name.'_model.php'; 
      $modelName = $name . '_model'; 
      // **here i make the object** 
      $this->model = new $modelName(); 
     }  
    } 

} 
ここ

モデルについて

ここ
class about_model{ 

    function __construct() { 
     echo 'test'; 
    } 

    public function test() { 
     $test = 'test one'; 
    } 

} 

であるメインコントローラ*です

class About extends Conroller { 

    function __construct(){ 
     parent::__construct(); 
     $this->model->test(); 
     $this->view->render('/about'); 
    } 

} 
+0

エラーメッセージ全体とともに、使用している最終コードを投稿してください。 – jasonbar

+0

これはブート・ファイルのほとんどすべてで、完全なエラーはAbout Conroller内の非オブジェクト上のメンバ関数test()への呼び出しでした。しかし、私は$コントローラ - > loadModel($ this-> request)を削除します。ブート・ファイルから、およそのモデルでは、$ this-> loadModel( 'about')を追加します。 – Ben

答えて

1

はあなたがloadModelを呼び出す必要がありますConrollerについてあなたのAboutコントローラはあなたはモデルを参照する前に:

class About extends Conroller { 

    function __construct(){ 

    parent::__construct(); 

    $this->loadModel('about'); 
    $this->about->test(); 
    } 
} 
+0

はい、うまくいきましたが、$ this-> about-> test();私は$ this-> model-> test();を使います。ありがとう@rjz – Ben

関連する問題